我试图从一个大文件中读取不同的裁剪图像,我设法读取了其中的大部分,但当我试图用tesseract读取它们时,其中一些返回空字符串。
的数据代码只有这一行:
pytesseract.image_to_string(cv2.imread("img.png"), lang="eng")
字符串有什么我可以尝试能够阅读这些图像吗?先谢了编辑:
camsedfj1#
在将图像传递到pytesseract之前对图像进行阈值化可以提高精度。
pytesseract
import cv2 import numpy as np # Grayscale image img = Image.open('num.png').convert('L') ret,img = cv2.threshold(np.array(img), 125, 255, cv2.THRESH_BINARY) # Older versions of pytesseract need a pillow image # Convert back if needed img = Image.fromarray(img.astype(np.uint8)) print(pytesseract.image_to_string(img))
字符串这个打印出来了
5.78 / C02
型
**编辑:**仅对第二张图像进行阈值处理,返回11.1。另一个可以帮助的步骤是将页面分割模式设置为“将图像视为单个文本行”,配置为--psm 7。在第二张图像上执行此操作将返回11.1 "202 ',引号来自顶部的部分文本。要忽略这些,您还可以通过配置-c tessedit_char_whitelist=0123456789.%设置使用白名单搜索哪些字符。一切都在一起:
11.1
--psm 7
11.1 "202 '
-c tessedit_char_whitelist=0123456789.%
pytesseract.image_to_string(img, config='--psm 7 -c tessedit_char_whitelist=0123456789.%')
型返回11.1 202。很明显pytesseract很难处理那个百分比符号,我不知道如何通过图像处理或配置更改来改进它。
11.1 202
1条答案
按热度按时间camsedfj1#
在将图像传递到
pytesseract
之前对图像进行阈值化可以提高精度。字符串
这个打印出来了
型
**编辑:**仅对第二张图像进行阈值处理,返回
11.1
。另一个可以帮助的步骤是将页面分割模式设置为“将图像视为单个文本行”,配置为--psm 7
。在第二张图像上执行此操作将返回11.1 "202 '
,引号来自顶部的部分文本。要忽略这些,您还可以通过配置-c tessedit_char_whitelist=0123456789.%
设置使用白名单搜索哪些字符。一切都在一起:型
返回
11.1 202
。很明显pytesseract很难处理那个百分比符号,我不知道如何通过图像处理或配置更改来改进它。