Python pytesseract-找不到针对oem 2的eng.traineddata

问题描述 投票:1回答:1

我正在尝试从简单的图像中提取文本。

sample_image

当我使用默认引擎(OEM 3)时,文本被提取(效果不佳)。我想使用其他引擎(OEM 2)来查看输出是否可以改善。

import pytesseract

#this is the config that gives a poor output
config = '--tessdata-dir "C:/Program Files/Tesseract-OCR/tessdata" -l eng --oem 2 --psm 6'
text = pytesseract.image_to_string(crop, config=config)

[当我尝试通过选项更改引擎时,出现错误,提示未找到语言文件:

#experimental config config = '--psm 6' text = pytesseract.image_to_string(crop, config=config)

您可以看到,我正在显式传递eng.traineddata目录,但找不到语言文件。

我有两个问题:

    如何通过第一个配置文件提高OCR的质量?
  1. 为什么找不到语言文件?我有eng.traineddata,eng.user-patterns和eng.user-words在提到的文件夹中,以及在那里安装的一些其他文件和文件夹。
  • 我还确保我的环境变量正确(因此第一个配置文件可以工作)。

    谢谢

  • python image ocr tesseract python-tesseract
    1个回答
    0
    投票
    [执行OCR时,在将图像放入Pytesseract中之前对其进行预处理非常重要。特别是对于此图像,我们可以删除水平和垂直网格线。这是预处理后的图像:

    enter image description here

    Pytesseract OCR的结果

    XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX 89 987 98 7 987 9 789 87 987 9 978 9 78 978 9 789 78 987 9 78 987 9 78 *978 97/8 %9 “78 978 9 78 978 978 978 978 98 9 78 978 978 978 978 978 987 978 7897 978 9 9 78 9 89 98 978 9

    代码

    import cv2 import pytesseract pytesseract.pytesseract.tesseract_cmd = r"C:\Program Files\Tesseract-OCR\tesseract.exe" # Remove horizontal and vertical lines image = cv2.imread('1.png') kernel_vertical = cv2.getStructuringElement(cv2.MORPH_RECT, (1,50)) temp1 = 255 - cv2.morphologyEx(image, cv2.MORPH_CLOSE, kernel_vertical) horizontal_kernel = cv2.getStructuringElement(cv2.MORPH_RECT, (50,1)) temp2 = 255 - cv2.morphologyEx(image, cv2.MORPH_CLOSE, horizontal_kernel) temp3 = cv2.add(temp1, temp2) result = cv2.add(temp3, image) data = pytesseract.image_to_string(result, lang='eng',config='--psm 6') print(data) cv2.imshow('result', result) cv2.waitKey()

    © www.soinside.com 2019 - 2024. All rights reserved.