python - 为什么 pytesseract 无法识别此图像
问题描述
我正在这张图片上测试 pytesseract OCR
但结果始终是 30770.0 但我本来想要这个数字:997,70 仅供参考:这个图像已经被转换了:
img = img.convert('L') # greyscale
img = img.resize((img.size[0] * 3, img.size[1] * 3), 1)
img = ImageEnhance.Contrast(img).enhance(5.0)
img = ImageOps.equalize(img)
img = ImageOps.invert(img)
代码下方:
pytesseract.pytesseract.tesseract_cmd = 'C:\\Program Files\\Tesseract-OCR\\tesseract.exe'
img2 = "full_snap__1609584655.png"
numStr2 = pytesseract.image_to_string(img2, lang='eng',config='--psm 10 --oem 1 digits -c tessedit_char_whitelist=0123456789')
print('997,70 :',float(numStr2))
我已经尝试调整 pytesseract 函数 image_to_string 的 --psm 参数,但它不起作用。
谢谢您的帮助
解决方案
我对这个问题的解决方案是形态转换。
如果你应用侵蚀
前景物体的厚度或大小减小或图像中的白色区域减小。它对于去除小的白噪声(正如我们在色彩空间章节中所见)、分离两个连接的对象等很有用。
erd = cv2.erode(gry, None, iterations=1)
结果:
现在,如果您阅读它:
print(pytesseract.image_to_string(erd))
结果:
997 70€
代码:
import cv2
import pytesseract
img = cv2.imread("R83OY.png")
h, w, c = img.shape
gry = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
erd = cv2.erode(gry, None, iterations=1)
print(pytesseract.image_to_string(erd))
可能的问题:为什么将内核设置为无?
如果初始化内核(即 (5, 5) )并将其应用于图像,结果将是:
如您所见,应用内核并没有改善结果。
推荐阅读
- python - 如何更改 scipy curve_fit/least_squares 步长?
- python - Discord.py 排名命令
- javascript - 为什么这会在 Web 控制台编译器中显示以及如何修复它并找到值
- excel - Worksheet_Change Target.Address 在特定工作表上
- java - Project Euler #14 输出的输出不正确
- javascript - 如何根据数据属性对父 div 中的子 div 进行排序?
- javascript - d3.js 分子图仅适用于对象的最后一个元素
- material-ui - Material UI React - 循环中的模态数据仅显示最后一次迭代数据
- javascript - 如何在 Materials-UI 中更改选项卡组件的大小?
- logstash - 无法将新更新的事件从 filebeat 发送到 logstash