使用 pytesseract 提高文本提取的准确性

问题描述 投票:0回答:3

我正在开发一个从图像中提取文本进行翻译的项目,但 pytessearct 库无法检测所有单词。我需要 100% 的检测准确度。怎样才能更准确?

我用于提取的图像:

import pytesseract
from PIL import Image, ImageDraw, ImageFont  # opening and manipulating images
from PIL import ImageEnhance
from pytesseract import Output

custom_config = r'--oem 3 --psm %d' % 12
pytesseract.pytesseract.tesseract_cmd = r"C:\Users\LENOVO\AppData\Local\Programs\Tesseract-OCR\tesseract.exe"

im = Image.open("C:\\Users\\LENOVO\\Desktop\\photo2.png")
im=im.convert("RGB")
#im.show()
width, height = im.size

curr_con = ImageEnhance.Contrast(im)
new_con =4.0  
# Contrast enhanced by a factor of 0.3
img_contrasted = curr_con.enhance(new_con)  
# shows updated image in image viewer
#img_contrasted.show()

# Print the dimensions
extracted_text = pytesseract.image_to_string(im , lang='eng', config=custom_config)
data = pytesseract.image_to_data(im , output_type=Output.DICT, lang='eng', config=custom_config)
data1 = pytesseract.image_to_data(im , lang='eng', config=custom_config)
#print(extracted_text)
print(data1)

这是我正在使用的代码,但它无法检测所有单词。 上图中“扭曲方向”行中的示例会检测除“方向”一词之外的所有单词。我尝试过增加对比度,但都不起作用。

python ocr python-tesseract
3个回答
0
投票

Firefox 和 Chrome 有一个免费的浏览器扩展程序,称为 Copyfish。它声称是开源的。但它似乎可以使用在线 API 来工作。因此,如果是这种情况,它将图像发送到 ocrspace 服务器。如果您同意,您可以在 futurepedia 上找到它。我现在才刚刚尝试。因此,如果它不适用于所有情况,请不要生气。它确实可以识别图像中的所有文本。我现在只能说这么多。

我想,您还可以从 ocrspace 获取 API 密钥并编写您自己的 OCR 应用程序。就其本身而言,这不会提供任何优势,但您可能可以进行一些图像处理来提高准确性。名为

unpaper
的免费实用程序可以提供帮助。

  1. 将 DPI 固定为至少 300。
  2. 确保文字大小合适,例如12pt或以上。
  3. 使用歪斜校正和扭曲校正技术来修复文本行。
  4. 确保图像的光照均匀且明亮。
  5. 对图像进行去噪,这可以通过图像阈值处理来实现。

0
投票

我使用 Keras_OCR 管道进行文本检测和提取,它具有非常高的准确性。任何和我遇到同样问题的人都应该尝试同样的方法。


0
投票

这里还有一些其他 AI 工具,在 Nextgentool.io 的“代码”类别下,您可以找到很酷的工具。我最喜欢的是钠。

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