Tesseract ORC无法从图像中读取清晰的文字

时间:2020-04-21 07:47:39

标签: c++ opencv ocr tesseract

我无法使用Tesseract OCR从文档中读取编号。

我已从文档中剪切文本。并使用Tesseract OCR进行阅读。但是在命令行中没有任何输出。

我已经用简单的文档白色背景和黑色数字对其进行了测试。工作完美。

这是我检测号码的代码:

orc->SetImage(source.data, source.size().width, source.size().height, source.channels(), 
source.step1());
QString outText = QString::fromUtf8(orc->GetUTF8Text());
if (outText != "")
    qDebug() << outText;

这是我的照片:

enter image description here

有人可以告诉我我错了吗?

1 个答案:

答案 0 :(得分:2)

我不知道如何用c ++做到这一点。但是我可以在python中使用此代码获取数字。我认为关键是在hsv彩色模式下进行处理。

import cv2
import numpy as np
import pytesseract

img = cv2.imread("djwtV.png", cv2.IMREAD_COLOR)
img = cv2.resize(img, None, fx=3, fy=3)
hsv = cv2.cvtColor(img, cv2.COLOR_BGR2HSV)

upper = np.array([255, 255, 150])
lower = np.array([0, 0, 0])
mask = cv2.inRange(hsv, lower, upper)
mask = cv2.bitwise_not(mask)

custom_config = r'-l eng --oem 3 --psm 6 -c tessedit_char_whitelist="0123456789,"'
text = pytesseract.image_to_string(mask, config=custom_config)
print("Detected: ", text)

cv2.imshow("img", img)
cv2.imshow("mask", mask)

cv2.waitKey(0)
cv2.destroyAllWindows()

结果

Detected:  4,691,613

如果您将代码更改为此

upper = np.array([255, 255, 125])

custom_config = r'-l jpn --oem 3 --psm 6 '

你会得到这个

Detected:  | 預り金 計①(a+b+c) |  4.691.613