如何在tesseract中保留文档结构

25
我正在使用tesseract OCR从图像中提取文本。保留文档的结构对我非常重要。目前,tesseract不会保留结构,它实际上会改变文本的顺序。我的输入是下面的图像。 input 我得到的输出如下:
Someto the left
Someto the left

Some in the middle
Some in the middle

Some with some tab
Some with some tab

Some with some space between them
Some with some space between them

Sometext here
Sometext here

this much
this much

如何获得与图像中相同结构的所需输出?

即如下所示:

                                                 Some text here
                                                 Some text here

Some to the left
Some to the left

                    Some in the middle
                    Some in the middle

        Some with some tab
        Some with some tab

Some with some space between them                       this much
Some with some space between them                       this much
5个回答

26
新版的tesseract(3.04)有一个名为preserve_interword_spaces的选项,该选项可以实现你想要的功能。
需要注意的是,tesseract在单词之间检测到的空格数量可能在类似行之间并不总是相同的。因此,与一串前置空格左对齐的单词(如您的示例中)可能无法以此方式输出 -- preserve_interword_spaces选项并不尝试执行任何花哨的操作,它只是保留找到的空格提取。默认情况下, tesseract将一系列的空格折叠成一个。
关于此选项的详细信息,请参见此处

谢谢...它运行了!!在Windows上我仍然卡在编译上,而在Ubuntu 14.04上它可以正常工作。 - Pavan Pyati
tess4j 中是否有公开此 API 的接口? - Daniil Shevelev
@David 你能否分享一下有效的代码在这里?我这边无法运行。 - vijesh
@David:你能解释一下_Tesseract检测到的单词之间的空格数量在类似行之间可能并不总是相同_。此外,是否有办法获取左对齐的空格? - aspiring1

5
唯一可靠的方法是启用hOCR输出并解析它。它将包含每个单词在页面上的像素位置,就像原始图像中一样。
您可以通过在Tesseract的配置文件或您使用的任何API中指定来实现此目的。
hOCR是HTML的一个子集,Tesseract生成的内容并不总是有效的XML,因此您可以使用HTML解析器或编写自己的解析器,但不能可靠地使用XML解析器。

即使有边界框坐标,我如何在一个.txt文件中复制它或以适当的方式在firefox中查看布局,顺便提一下,它在chrome中打不开。一个.txt文件将具有不同的宽度和高度,所以我不需要对一个.txt文件进行标准化吗? - aspiring1

4

对于多列文档,如果想要保留单独的一列连续文本(例如先阅读第1列,然后再阅读第2列),或者带有照片的文档(例如报纸文章),可能值得调整页面分割方法。 Tesseract 的默认页面分割方法是仅执行“自动页面分割”,但不进行“方向和脚本检测 (OSD)”。

psm 设置为 1 告诉 Tesseract 使用“带 OSD 的自动页面分割”。这样,Tesseract 可以识别多列文档(而不是将页面视为单个文本块),并帮助 Tesseract 避免尝试 OCR 非文本块,如照片。

有关页面分割方法的更多信息,请参见:https://github.com/tesseract-ocr/tesseract/wiki/ImproveQuality

以下是调整页面分割方法的命令行语法示例:

tesseract imagename outputbase [-l lang] [-psm pagesegmode] [configfile...]

更多有关语法的信息,请参见:https://github.com/tesseract-ocr/tesseract/wiki

3

0

在我的情况下(命令行),添加--psm 6选项是有效的。


你应该包含一个来源:https://tesseract-ocr.github.io/tessdoc/ImproveQuality#page-segmentation-method - evaristegd

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接