Tesseract 3能够执行页面布局分析。但是,我找不到任何有关如何将库用于此类目的的示例代码或文档。我希望这里有人可以解释如何对图像执行布局分析以及如何解析结果数据。
答案 0 :(得分:7)
可以为Tesseract提供页面模式参数(-psm
),该参数可以具有以下值:
0
=仅定位和脚本检测(OSD)。1
=使用OSD自动分页。2
=自动分页,但没有OSD或OCR 3
=全自动页面分割,但没有OSD。 (默认)4
=假设一列可变大小的文本。5
=假设一个垂直对齐文本的统一块。6
=假设一个统一的文本块。7
=将图像视为单个文本行。8
=将图像视为一个单词。9
=将图片视为圆圈中的单个字词。10
=将图像视为单个字符。示例:
tesseract image.tif image.txt -l eng -psm 0
但是,我不确定是否可以在独立模式下使用布局分析。
答案 1 :(得分:5)
首先,初始化TessBaseAPI
实例。您可以使用Init()
(如果您想要执行进一步的文字识别)或InitForAnalysePage()
(如果您只对文本框感兴趣)。
其次,使用SetImage()
设置图像。
最后,请致电AnalyseLayout()
以获取PageIterator
,为您提供文字框。
tesseract::TessBaseAPI tessApi;
tessApi.InitForAnalysePage();
// tessApi.SetImage(...);
tesseract::PageIterator *iter = tessApi.AnalyseLayout();
// Instead of RIL_WORD you can use any other PageSegMode
while (iter->Next(tesseract::RIL_WORD)) {
int left, top, right, bottom;
iter->BoundingBox(
tesseract::RIL_WORD,
&left, &top, &right, &bottom
);
}
答案 2 :(得分:1)
不确定这是否完全回答了您的问题,但我在这里寻找方法来获取bbox坐标信息(以及在bbox内部识别的文本可选)给定输入图像。现在使用tesseract可以解决这个问题。
$> tesseract test.tiff test.txt -l eng -psm 1 tsv
上面代码片段中注意到的参数是'psm'和'tsv'。 'psm'选择页面分割模式,'tsv'生成一个漂亮的表格输出文件,其中包含您在文本图像上需要的所有信息(页面块行号,bbox coods,置信度,预测文本)(如下所示) )
level page_num block_num par_num line_num word_num left top width height conf text
1 1 0 0 0 0 0 0 5500 4250 -1
2 1 1 0 0 0 327 285 2218 53 -1
3 1 1 1 0 0 327 285 2218 53 -1
4 1 1 1 1 0 327 285 2218 53 -1
5 1 1 1 1 1 327 285 246 38 87 INFOPAC
5 1 1 1 1 2 620 287 165 38 87 PAGE
5 1 1 1 1 3 952 290 100 37 95 NAME
5 1 1 1 1 4 1173 292 1082 45 39 ENTRYDATE
5 1 1 1 1 5 2333 302 212 36 48 EMAIL
答案 3 :(得分:0)
自3.04以来有一个选项:
tesseract -c preserve_interword_spaces=1 test.tif test
Here is a reference看起来像相关的开发线程。