Tesseract 4:启用页面分割后,输入图像可以具有最大分辨率吗?

时间:2019-06-13 13:37:19

标签: tesseract

我的Java项目处理OCRing pdf以对其进行索引。每个pdf页面都转换为png,然后通过管道传输到tesseract 4。

pdf-> png转换使用PDFBox PdfRenderer中的renderImageWithDPI

buffImage = pdfRenderer.renderImageWithDPI(currentPage,                             PNG_DENSITY,                             ImageType.GRAY);

根据tesseract的Wiki建议使用

PNG_DENSITY = 300获得最佳效果。

OCR命令是

用于tesseract的命令是

tesseract input.png output -l fra --psm 1 --oem 1

我也尝试过--psm 2 or 3,它也涉及页面分割,即

  

1使用OSD自动进行页面细分。

     

2自动页面分割,但没有OSD或OCR。

     

3全自动页面分割,但没有OSD。 (默认)

使用146页的扫描PDF(生产者/创建者是Adobe Acrobat 7.0,其中涉及受版权保护的内容,所以我不能共享它),tesseract在给定的页面上进行了无休止的计算(该过程永无止境)(85)。

由于测试时间太长(即:等到第85页获得OCRed),我决定使用Evince的“打印到文件”功能生成此pdf的摘录。

现在,由Evince制作的pdf文件(制作人/创建者是cairo 1.14.8),Tesseract已成功处理(即图像获得OCRed)。

不同之处在于图像分辨率。失败的图像为4991x3508像素,而成功的图像仅为3507x2480像素。

请注意:尽管无法理解文本(两列混合),但“使用OSD稀疏文本”(即--psm 12)中的tesseract处理页面“成功”。 / em>

经过多次尝试和错误编辑 看起来输入图像的宽度必须严格小于4000像素,才能进行页面细分。查看Tesseract源代码,在一个名为“ pgedit”的类中,画布大小似乎限制为4000 x 4000,因为“ ScrollView”的构造函数(无论它服务什么)是:

ScrollView::ScrollView(const char* name, int x_pos, int y_pos, int x_size,
                   int y_size, int x_canvas_size, int y_canvas_size, bool y_axis_reversed)

所以我现在的问题是,为什么要使用页面分割的宽度上限为4000像素,如果将以300dpi转换为png的pdf页面超过4000像素(宽或高或两者兼有),我该怎么办? ?

任何帮助表示赞赏,

0 个答案:

没有答案