Tesseract OCR在二进制图像上

时间:2019-05-21 12:00:57

标签: python opencv ocr tesseract python-tesseract

我有这样的二进制图像,

enter image description here

我想在Python中使用tesseract ocr提取图像中的数字。我在图片上这样使用pytesseract

txt = pytesseract.image_to_string(img)

但是我没有得到任何好的结果。

我可以在预处理或增强中做些什么来帮助tesseract做得更好?

我尝试使用East Text Detector从图像中定位文本,但是无法识别文本。

如何在python中进行此操作?

1 个答案:

答案 0 :(得分:1)

我认为页面分割模式是一个重要因素。

由于我们尝试读取列值,因此可以使用--psm 4source

import cv2
import pytesseract

img = cv2.imread("k7bqx.jpg")
gry = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
txt = pytesseract.image_to_string(gry, config="--psm 4")

我们要使文本以#开头

txt = sorted([t[:2] for t in txt if "#" in t])

结果:

['#3', '#7', '#9', '#€']

但是我们错过了4、5,我们可以申请adaptive-thresholding

enter image description here

结果:

['#3', '#4', '#5', '#7', '#9', '#€']

很遗憾,无法识别#2#6

代码:


import cv2
import pytesseract

img = cv2.imread("k7bqx.jpg")
gry = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
thr = cv2.adaptiveThreshold(gry, 252, cv2.ADAPTIVE_THRESH_MEAN_C,
                            cv2.THRESH_BINARY_INV, blockSize=131, C=100)
bnt = cv2.bitwise_not(thr)
txt = pytesseract.image_to_string(bnt, config="--psm 4")
txt = txt.strip().split("\n")
txt = sorted([t[:2] for t in txt if "#" in t])
print(txt)