带多个错误的Tesseract数字显示

2024-09-27 07:32:35 发布

您现在位置:Python中文网/ 问答频道 /正文

我希望能够从图像中识别数字。所以我一直在玩tesseract和python。我研究了如何准备图像,并尝试在其上运行tesseract,我必须说,我对我的数字识别能力差感到非常失望。我曾尝试使用OpenCV准备图像,并认为我做得很好(参见下面的示例),但tesseract在尝试识别图像时有很多错误。我是不是期望太高了?但当我看这些示例图像时,我认为tesseract应该能够轻松地识别这些数字,而不会出现任何问题。我想知道是否精度还没有达到,或者我的配置是否不是最优的。任何帮助或指导都将不胜感激

我试图改善数字识别的事情:(似乎没有什么能显著改善结果)

  • 限制字符:config = "--psm 13 --oem 3 -c tessedit_char_whitelist=0123456789"
  • 高档图像
  • 在图像周围添加一个白色边框,给字母更多的空间,正如我所读到的,这样可以改进识别过程
  • 阈值图像仅具有黑白像素

示例:

图1:

特塞拉特:72 enter image description here

图2:

已识别的TeserAct:0 enter image description here

编辑: 图3:

https://ibb.co/1qVtRYL

特塞拉特:1723


Tags: 图像config示例错误精度数字字符事情
1条回答
网友
1楼 · 发布于 2024-09-27 07:32:35

我不确定你到底出了什么问题。我下载了这些图像,tesseract对它们进行了很好的解释。您使用的是什么版本的tesseract(我使用的是5.0)

781429

209441

import pytesseract
import cv2
import numpy as np
from PIL import Image

# set path
pytesseract.pytesseract.tesseract_cmd = r'C:\\Users\\ichu\\AppData\\Local\\Programs\\Tesseract-OCR\\tesseract.exe';

# load images
first = cv2.imread("first_text.png");
second = cv2.imread("second_text.png");
images = [first, second];

# convert to pillow
pimgs = [];
for img in images:
    rgb = cv2.cvtColor(img, cv2.COLOR_BGR2RGB);
    pimgs.append(Image.fromarray(rgb));

# do text
for img in pimgs:
    text = pytesseract.image_to_string(img, config=' psm 10  oem 3 -c tessedit_char_whitelist=0123456789');
    print(text[:-2]); # drops newline + end char

相关问题 更多 >

    热门问题