php - Tesseract - 检测图像的小字体并转换为文本
问题描述
我有一张银行支票的截图,我需要这张截图中的所有文字,但 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 能够正确读取和转换每一个文本。
解决方案
在 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
推荐阅读
- docker - Filebeat 和 Kafka:客户端已用完可与之交谈的代理
- flutter - TextSpan 的文字不显示是否溢出并放在 WidgetSpan 之后
- python - 为什么在我编写的这段代码中的“else”函数中“中断”和语法错误时会出现“中断外部循环”?
- sentry - 如何使用管理员密码配置自托管哨兵?
- clojure - 如何在 Clojure 中创建一个空集合?
- vivado - Vivado - 架构
- reactjs - 从 @apollo/client v 3.3.11 导入的 useMutation
- javascript - 想要水平而不是垂直对齐这个动态列表项
- python - 字典在给定数量的字符后有换行符
- sql - 如何过滤相似的列值