Tesseract OCR 无法读取从图像中剪切的明文
Tesseract ORC not reading clear text cutting from image
我在使用 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;
这是我的照片:
谁能告诉我哪里错了?
我不知道怎么用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
我在使用 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;
这是我的照片:
谁能告诉我哪里错了?
我不知道怎么用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