gpt4 book ai didi

java - 从 tesseract hOCR XML 输出中选择的 XPathExpression

转载 作者:塔克拉玛干 更新时间:2023-11-01 22:46:24 26 4
gpt4 key购买 nike

我有一个大致如下形状的文件:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<title></title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta name='ocr-system' content='tesseract 3.02' />
<meta name='ocr-capabilities' content='ocr_page ocr_carea ocr_par ocr_line ocrx_word'/>
</head>
<body>
<div class='ocr_page' id='page_1' title='image "D:\DPC2\converted\60\60.tiff"; bbox 0 0 2479 3508; ppageno 0'>
<!-- LOTS OF CONTENT -->
</div>
</body>
</html>

然后我将 JDOM 2.x 与以下 XPath 查询一起使用:

//htmlFile is an input variable of type java.nio.Path
Document document = xmlBuilder.build(htmlFile.toFile());

XPathFactory factory = XPathFactory.instance();
XPathExpression<Element> xpePages =
factory.compile("//html/body/div[@class='ocr_page']", Filters.element());
List<Element> pages = xpePages.evaluate(document);

但是它永远无法找到任何元素,我在查询中做错了什么?

最佳答案

命名空间。

xmlns="http://www.w3.org/1999/xhtml" 表示XML文件中没有前缀的元素实际上在http://www .w3.org/1999/xhtml 命名空间,您需要使用前缀在 XPath 表达式中指定它:

XPathExpression<Element> xpePages = 
factory.compile("/h:html/h:body/h:div[@class='ocr_page']",
Filters.element(),
null, // no variables
Namespace.getNamespace("h", "http://www.w3.org/1999/xhtml"));

您必须使用前缀,因为在 XPath 中没有前缀总是意味着没有命名空间。

关于java - 从 tesseract hOCR XML 输出中选择的 XPathExpression,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23385551/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com