python - 在使用 Tesseract 进行文本识别之前对图像进行预处理
问题描述
我有一个扫描页面,我正在尝试识别和解析图像中的数字(逐行)。为了做到这一点,我使用 Python Pytessarect,代码如下:
img = cv2.imread('image.jpg',0)
ret,thresh1 = cv2.threshold(img,110,255,cv2.THRESH_TOZERO)
scan_config = r'--oem 3 --psm 6'
extracted_text = pytesseract.image_to_string(thresh1, config=scan_config)
输入图像.jpg:
不幸的是,结果并不令人满意,因为如您所见,第 4 列的数字被部分擦除(人眼可以识别数字,但阈值算法会使情况变得更糟):
006442000180
006354924010
005900000461
062891556156
006*3*00000261
006900000261
有人知道如何对图像进行预处理,以便算法甚至能够识别当事人擦除的数字?顺便说一句,阈值函数的第二个参数是硬编码的(110),它可能不会匹配那里的每个图像,这取决于照片的质量,有没有办法动态生成值或使用替代阈值方法(也许使用 OpenCV 过滤器)?
解决方案
tesseract PzCox.png - --dpi 72 --psm 6
最好用(英文)模型制作这个:
006442000180
006354924010
005300000461
062891556156
006300000261
006300000261
推荐阅读
- colors - 在 Ada 中打印彩色文本——ANSI 转义码似乎无法正常工作
- sql - 垂直 UTF-8 字符
- docker - Jenkins - Helm - 尝试运行测试时未找到 Docker
- machine-learning - 从经过训练的 xgboost 模型中提取树和权重
- r - 两个表的阈值超出检查
- docker - VPS 上的 OpenVPN 服务器没有互联网
- hash - 使用 ImageMagick 获取图像的模糊哈希
- mysql - 我们可以在 phpMyAdmin 中设置 innodb_autoinc_lock_mode=0 吗?这个数据库是特定的吗?
- python - MacOS 上的 TensorFlow:您的 CPU 支持未编译此 TensorFlow 二进制文件以使用的指令:AVX2 FMA
- python - 多个列表的乘积——单个列表 vs 列表数组,需要帮助理解