Tesseract - 检测图像的小字体大小并转换为文本

Posted

技术标签:

【中文标题】Tesseract - 检测图像的小字体大小并转换为文本【英文标题】:Tesseract - Detecting small font size of image and convert to text 【发布时间】:2018-11-14 20:24:24 【问题描述】:

我有一张银行支票的截图,我需要这张截图中的所有文字,但 tesseract 无法正确读取。我也尝试对图像进行预处理,但输出失败。

我使用 ImageMagick 进行预处理,使用 Tesseract 识别文本。 图片链接:https://imgur.com/a/pcgizic

我可以检索帐号,但不能检索 IFSC 代码和人名“SRINIVAS”

我的步骤如下:

magick -density 300 check1.jpg -depth 8 -strip -background white -alpha off check1.png

magick convert check1.png -resize 250% res_check1.png

convert -brightness-contrast 10x30 res_check1.png b_res_check1.png

convert b_res_check1.png -threshold 45% bin_res_check1.png

tesseract bin_res_check1.png o_res_check1

注意:我尝试将图像大小调整到 400%,但没有成功。 Google Vision API 能够正确读取和转换每一个文本。

【问题讨论】:

【参考方案1】:

在 ImageMagick 中,您可以使用 -lat(局部区域阈值)来处理图像以清理背景。我还有一个 bash shell 脚本,文本清理器,http://www.fmwconcepts.com/imagemagick/index.php

输入:

对于 ImageMagick 6,请尝试

convert input.jpg -negate -lat 25x25+10% -negate result.png

改变 -lat 参数以查看是否可以改进结果。

对于 ImageMagick 7,将 convert 替换为 magick。

这有帮助吗?小字体将难以处理。放大光栅图像通常没有多大帮助。但是您可以尝试使用锐化过滤器或更清晰的调整大小过滤器,例如 -filter catrom。见http://www.imagemagick.org/Usage/filter/

您还可以尝试在进一步处理之前进行透视变换以校正原始图像。这也可能有帮助。见http://www.imagemagick.org/Usage/distorts/#perspective

【讨论】:

当然我会试一试。问题是我需要处理数千张支票,每张支票的质量、清晰度、亮度和字体都不同。我该如何处理这种情况? 除了-lat,我没有通用的解决方案。太小的字体总是会成为一个问题,除非你有一个可以随密度缩放的矢量图像。光栅图像是固定的,放大不会有太大帮助。

以上是关于Tesseract - 检测图像的小字体大小并转换为文本的主要内容,如果未能解决你的问题,请参考以下文章

配置 Tesseract OCR 以读取相同字体大小的单词

Tesseract OCR 无法检测到不同的字体大小和未水平对齐的字母

使用 Tesseract 和 Pyocr 在 Python 中获取字体大小

如何训练 tesseract 识别低 DPI 下的小数字?

Tesseract OCR的Opencv图像转换

Tesseract:线检测太敏感