使用Tesseract进行页面布局分析
Page layout analysis using Tesseract?
Tesseract 3能够执行页面布局分析。但是,我找不到任何示例代码或文档来说明如何将库用于此类目的。我希望这里有人可以解释如何对图像进行布局分析以及如何解析结果数据。
Tesseract可以被赋予一个页面模式参数(-psm
),该参数可以有以下值:
-
0
=方向和脚本检测(OSD)。 -
1
= auto page segmentation with OSD. -
2
=自动页面分割,但没有OSD,或OCR -
3
=全自动页面分割,但没有OSD。(默认) -
4
=假设单列文本大小可变。 -
5
=假设一个统一的垂直对齐文本块 -
6
=假设一个统一的文本块 -
7
=将图像视为单个文本行。 -
8
=将图像视为单个单词。 -
9
=将图像视为圆圈中的单个单词。 -
10
=将图像视为单个字符。
的例子:
tesseract image.tif image.txt -l eng -psm 0
但是,我不确定是否可以在独立模式下使用布局分析
首先,初始化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
);
}
从3.04开始有一个选项:
tesseract -c preserve_interword_spaces=1 test.tif test
不确定这是否完全回答了您的问题,但我在这里找到了获得输入图像的bbox坐标信息(以及bbox内可选识别的文本)的方法。现在可以使用tesseract来解决这个问题。
$> tesseract test.tiff test.txt -l eng -psm 1 tsv
上面代码片段中需要注意的参数是'psm'和'tsv'。'psm'选择页面分割模式,'tsv'生成一个漂亮的表格输出文件,其中包含您的文本图像(如下所示)所需的所有信息(页块行号,bbox商品,置信度,预测文本)
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
相关文章:
- 如何使用C/C++在MacOSX中获得键盘布局
- Vulkan验证层不断在VkQueuePresentKHR()上抛出图像布局错误
- 布局兼容类型的并集
- Qt自定义QPush按钮未显示在布局上
- 与 tesseract::TessBaseApi() 相关的 Tesseract-OCR 出错(预期的类型说明符)
- 在Windows 10上使用Visual Studio 2019构建的Tesseract API c ++程序在Wind
- 按钮悬停在 QT 中垂直布局的选项卡小部件中不起作用
- 调整布局上的 QGraphicsView 小部件的大小
- 在 OpenCV 的 namedWindow 之前或之后初始化 Tesseract
- 如何在qt中将对象添加到现有布局中?--已解决
- 将布局映射到内存地址
- C++继承的虚拟类的内存布局
- 检查nullptr是否100%保护内存布局不受segfault影响
- C++ Python 的扩展 - 安全内存访问和内存布局
- QTree查看新行,没有布局就不可见已更改
- 类似元组的类模板的反向内存布局
- C++对象布局是否必须静态定义?
- 集合布局上的 Qt 分割错误
- 使用tesseract 3.01的页面布局分析时出现的奇怪问题
- 使用Tesseract进行页面布局分析