我正在尝试阅读这幅图像中的文本,其中也包含小数点和十进制数字
这样:
img = cv2.imread(path_to_image)
print(pytesseract.image_to_string(img))
我得到的是:
73-82
Primo: 50 —
我也尝试指定意大利语,但结果非常相似:
73-82 _
Primo: 50
通过搜索有关stackoverflow的其他问题,我发现使用白名单(在本例中为^{)可以提高十进制数的读取,但我也想读取图像中的单词。关于如何提高十进制数字的阅读能力有什么想法吗
Tags:
我建议将每行文本作为单独的图像传递给tesseract。
出于某种原因,解决小数点问题是很困难的
cv2.threshold
将图像从灰度转换为黑白李>cv2.dilate
形态学操作(沿水平方向合并块)李>pytesseract
李>代码如下:
我知道这不是最通用的解决方案,但它成功地解决了您发布的示例。
请将答案视为一个概念性的解决方案-找到一个可靠的解决方案可能非常具有挑战性
结果:
放大后的阈值图像:
第一片:
第二片:
第三部分:
输出文本:
7.3-8.2
Primo:50
通过down-sampling图像,您可以轻松识别
如果将样本减少0.5,结果将是:
现在如果你读到:
我使用PyteSeract 0.3.7版本(current)得到了结果
代码:
说明:
输入图像包含一点伪影。您可以在图像的右侧看到它。另一方面,当前图像非常适合OCR识别。当图像中的数据不可见或损坏时,需要使用预预处理方法。请阅读以下内容:
Image processing
Page-segmentation-mode
相关问题 更多 >
编程相关推荐