python - 为什么使用 pytesseract 从图像中读取文本不起作用?
问题描述
这是我的代码:
import pytesseract
pytesseract.pytesseract.tesseract_cmd = r'F:\Installations\tesseract'
print(pytesseract.image_to_string('images/meme1.png', lang='eng'))
这是图像:
输出如下:
GP.
ed <a
= va
ay Roce Thee .
‘ , Pe ship
RCAC Tm alesy-3
Pein Reg a
years —
? >
ee bs
我在输出中看到了 years 这个词,所以它确实识别了文本,但为什么它不能完全识别它?
解决方案
在杂乱的场景中,OCR 仍然是一个非常棘手的问题。如果不对图像进行一些预处理,您可能不会获得更好的结果。在这种特定情况下,首先对图像进行阈值处理是有意义的,仅提取白色区域(即文本)。您可以为此查看 opencv:https ://docs.opencv.org/3.4/d7/d4d/tutorial_py_thresholding.html
此外,在您的图像中,任意位置只有两行文本,因此使用页面分割模式可能是有意义的:https ://github.com/tesseract-ocr/tesseract/issues/434
推荐阅读
- python - 谷歌表python脚本条件格式自定义公式
- audio - FFmpeg:如何在 ffmpeg 中快速应用音量过滤器
- sql - 在 SQL 中使用 Over & Partition
- c - 关于链表结构的语法问题
- oracle - Oracle APEX 交互式报告中的错误 - ORA-01427:单行子查询返回多于一行
- spring - Sping MVC和hibernate:jsp中未声明的变量在保存时变为null
- ios - 我的应用程序没有执行我编写的 Swift 代码
- node.js - TypeScript:仅在单元测试中找不到模块的声明文件
- python-3.x - 如何使用 Boto3 将大文件拆分成小块并并行加载到 Dynamodb
- android - 无法合并dex,Android项目构建失败