【问题标题】:tesseract not able to read all digits accuratelytesseract 无法准确读取所有数字
【发布时间】:2017-07-14 08:49:39
【问题描述】:

我正在使用 Tesseract 从手机摄像头拍摄的屏幕图像中识别数字。我已经对图像进行了一些预处理:processed image,并且使用 Tesseract,我能够得到一些混合的结果。在上面的图像上使用以下代码,我得到以下输出:“EOE”。但是,使用这张图片processed image,我得到了完全匹配:“39:45.8”

import cv2
import pytesseract
from PIL import Image, ImageEnhance
from matplotlib import pyplot as plt

orig_name  = "time3.jpg";
image_name = "time3_.jpg";

img = cv2.imread(orig_name, 0)
img = cv2.medianBlur(img, 5)

img_th = cv2.adaptiveThreshold(img, 255,\
    cv2.ADAPTIVE_THRESH_MEAN_C,cv2.THRESH_BINARY, 11, 2)

cv2.imshow('image', img_th)
cv2.waitKey(0)
cv2.imwrite(image_name, img_th)

im = Image.open(image_name)

time = pytesseract.image_to_string(im, config = "-psm 7")
print(time)

我可以做些什么来获得更一致的结果?

【问题讨论】:

  • 您可以运行连接组件分析,然后为每个组件运行检测。

标签: opencv image-processing ocr tesseract


【解决方案1】:

我做了三件额外的事情来使第一张图片正确无误。

  1. 您可以为 Tesseract 设置白名单。在你的情况下,我们知道 此列表中只有字符 01234567890.:。这 大大提高了准确率。

  2. 我调整了图像的大小以使 tesseract 更容易。

  3. 我从 psm 模式 7 切换到 11(尽可能识别)

代码:

import cv2
import pytesseract
from PIL import Image, ImageEnhance

orig_name  = "./time1.jpg";
img = cv2.imread(orig_name)

height, width, channels = img.shape
imgResized = cv2.resize(img, ( width*3, height*3))
cv2.imshow("img",imgResized)
cv2.waitKey()
im = Image.fromarray(imgResized)
time = pytesseract.image_to_string(im, config ='--tessdata-dir "/home/rvq/github/tesseract/tessdata/" -c tessedit_char_whitelist=01234567890.: -psm 11 -oem 0')
print(time)

注意: 您可以使用Image.fromarray(imgResized) 将 opencv 图像转换为 PIL 图像。您不必写入磁盘并再次读取它。

【讨论】:

  • 我尝试了您的建议,它确实提高了识别数字的准确性,但我想澄清一下您是否完整阅读了第一张图片。通过您的额外修改,我得到第一张图像的“2408”和第二张图像的“39 458”。它似乎缺少冒号和句号。我需要包含--tessdata-dir 选项吗?
  • 尝试使用 tessdata 选项是否效果更好。您需要将 oem 模式设置为 0。白名单不适用于 tesseract lstm 模式 (4.0)
  • 我包含了您建议的所有上述选项:time = pytesseract.image_to_string(im, config ='--tessdata-dir "/usr/share/tesseract-ocr/tessdata/" -c tessedit_char_whitelist=01234567890.: -psm 11 -oem 0') 并且我仍然分别为第一张和第二张图像获得“2408”和“39 458”。你还有什么可以建议我探索的吗?也许对图像进行更多的预处理?提前致谢!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-12-20
  • 1970-01-01
  • 1970-01-01
  • 2013-11-25
  • 1970-01-01
  • 2017-03-07
  • 1970-01-01
相关资源
最近更新 更多