首页 > 解决方案 > 在使用 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:

输入图像.jpg

不幸的是,结果并不令人满意,因为如您所见,第 4 列的数字被部分擦除(人眼可以识别数字,但阈值算法会使情况变得更糟):

006442000180
006354924010
005900000461
062891556156
006*3*00000261
006900000261

有人知道如何对图像进行预处理,以便算法甚至能够识别当事人擦除的数字?顺便说一句,阈值函数的第二个参数是硬编码的(110),它可能不会匹配那里的每个图像,这取决于照片的质量,有没有办法动态生成值或使用替代阈值方法(也许使用 OpenCV 过滤器)?

标签: pythonopencvimage-processingtesseractpython-tesseract

解决方案


tesseract PzCox.png - --dpi 72 --psm 6

最好用(英文)模型制作这个:

006442000180
006354924010
005300000461
062891556156
006300000261
006300000261

推荐阅读