我从 Ubuntu 14.04LTS 上的 tesseract 3.03 获取了 XHTML 文件 .hocr。如何将该文件中的数据放入java中的对象中?或者我还能如何处理这个?对我来说不幸的是,我没有使用 XML 文件的经验,因此我们将不胜感激。
文件示例:
<div class='ocr_page' id='page_1' title='image "test2jpg.jpg"; bbox 0 0 10000 10000; ppageno 0'>
<div class='ocr_carea' id='block_1_1' title="bbox 250 192 8637 686">
<p class='ocr_par' dir='ltr' id='par_1_1' title="bbox 250 192 8637 686">
<span class='ocr_line' id='line_1_1' title="bbox 250 192 8637 414; baseline 0 -40">
<span class='ocrx_word' id='word_1_1' title='bbox 250 192 1606 375; x_wconf 70' lang='eng' dir='ltr'>NAME</span>
<span class='ocrx_word' id='word_1_2' title='bbox 1676 192 3051 375; x_wconf 73' lang='eng' dir='ltr'><strong>FIRSTNAME</strong></span>
唯一标识符应为“word_1_X”,其中X代表数字。
重点是获取 NAME 和 FIRSTNAME 以及他们在图片中的位置。 例如:
word_1_1 has X1=250 Y1=192
X2=1606 Y2=375
字符串值NAME。
有什么想法可以简单地实现这一点吗?
最佳答案
您通常使用 XML 解析器来解析 XML 文件。
但由于它看起来实际上是一个 HTML 文件(很可能只是 XHTML 文件生成的 HTML 输出,作为 JSF Web 应用程序的一部分),那么您最好使用 HTML 解析器。
有many HTML parsers ,其中最适合解析现实世界 HTML 文件和提取特定数据的任务之一是 Jsoup .
假设 HTML 输出在 URL http://example.com/some/page.jsf
上可用,您可以使用以下方法使用 Jsoup 提取感兴趣的数据:
Document document = Jsoup.connect("http://example.com/some/page.jsf").get();
for (Element ocrxWord : document.select(".ocrx_word")) {
String text = ocrxWord.text(); // NAME, FIRSTNAME, etc
String title = ocrxWord.attr("title"); // bbox 250 192 1606 375; x_wconf 70, etc
// ...
}
有了标题后,只需使用基本的 java.lang.String 方法将其进一步分解为更小的部分即可。这个责任超出了 HTML 解析器的范围,任何 Java 初学者都可以自己解决。
关于java - 如何在java中获取XHTML文件对象以及如何使用它?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30049358/