python-3.x 使用Tesseract OCR进行数字提取

2izufjch  于 2023-04-22  发布在  Python
关注(0)|答案(2)|浏览(132)

我想从图像中提取一个数字。我正在使用Tesseract OCR和Python来提取数字。但是Tesseract OCR无法正常工作。图像的格式如下:Image
文本为Arial字体,字体大小为80。我使用的代码如下:

import pytesseract
from PIL import Image

pytesseract.pytesseract.tesseract_cmd = "C:\\Program Files\\Tesseract-OCR\\tesseract.exe"
def process_image(iamge_name, lang_code):
    return pytesseract.image_to_string(Image.open(iamge_name), lang=lang_code)

def print_data(data):
    print(data)

def main():
    data_eng = process_image("test.jpg", "eng")
    print_data(data_eng)

if  __name__ == '__main__':
    main()

使用此代码,Tesseract无法检测到数字。大约有2,00,000张图像,我需要从中提取数字。如果有人能给予我一个相同的解决方案,那将非常有帮助。任何帮助都很感激。
先谢了

ff29svar

ff29svar1#

这个应该能用

import pytesseract
from PIL import Image

pytesseract.pytesseract.tesseract_cmd = "C:\Tesseract-OCR\\tesseract.exe"
def process_image(iamge_name, lang_code):
    return pytesseract.image_to_string(Image.open(iamge_name), lang=lang_code)

def print_data(data):
    print(data)

def main():
    
    data_eng = pytesseract.image_to_string(Image.open('test.jpg'), config='--psm 10 --oem 3 -c tessedit_char_whitelist=0123456789.')
    print(data_eng)

if  __name__ == '__main__':
    main()

结果如下:

1640778161.134756

Process finished with exit code 0

虽然不能保证所有的图像都能给予你准确的结果。如果图像不清晰,那么你可能需要对它们进行预处理。这里是PyTessearct SO link,供你进一步学习。

zzoitvuj

zzoitvuj2#

或者你可以参考easyocr

reader = easyocr.Reader(['en'], gpu=False)
resu = reader.readtext(
    'foo.png',
    allowlist ='0123456789'
    )

相关问题