【问题标题】:Pytesseract foreign language extraction using pythonPytesseract使用python提取外语
【发布时间】:2017-06-22 06:34:19
【问题描述】:

我在 Windows 机器上使用 Python 2.7、Pytesseract-0.1.7 和 Tesseract-ocr 3.05.01。

我尝试提取韩语和俄语的文本,我很肯定我提取了。

现在我需要与从图像中提取的字符串和字符串进行比较。

我无法比较字符串并得到正确的结果,它只是说不匹配。

这是我的代码:

# -*- coding: utf-8 -*-
from PIL import Image
import pytesseract
import argparse
ap = argparse.ArgumentParser()
ap.add_argument("-i", "--input", required=True, help="path to the image")
args = vars(ap.parse_args())
img = Image.open(args["input"])
img.load()
text = pytesseract.image_to_string(img)
print(text)
text = text.encode('ascii')
print(text)
i = 'Сред. Скорость'
print i
if ( text == i):
    print "Match"
else :
    print "Not Match"

附上用于提取文本的图片。

现在我需要一种方法来匹配它。而且我还需要知道从 pytesseract 中提取的字符串是 Unicode 还是什么?以及是否有办法将其转换为 Unicode(就像我们在写字板中有将字符转换为 Unicode 的选项)

【问题讨论】:

  • 我不知道我在提取俄语时是否做错了什么。像我需要提及我正在提取哪种文本吗?
  • 没有图片。如果您在文件顶部(coding 行下方)包含from __future__ import print_function,这将有助于您始终如一地使用print 函数。现在print(text) 是一个print 语句,后跟text 带有非功能括号。
  • 对不起。现在我已经用图片更新了帖子。

标签: python unicode ocr


【解决方案1】:

您正在使用非英语语言的 Tesseract,因此首先,请确保您已安装适用于您的语言的学习数据集,如 here 所示(仅限 Linux 指令)。

其次,如果您使用非 ascii 语言(就像我一样,作为斯洛文尼亚人),我强烈建议您切换到 Python 3。 Python 3 开箱即用地使用 Unicode,因此它确实为您节省了大量编码和解码字符串的痛苦......

# python3 obligatory !!!    
from PIL import Image
import pytesseract

img = Image.open("T9esw.png")
img.load()
text = pytesseract.image_to_string(img, lang="rus")  #Specify language to look after!
print(text)
i = 'Сред. Скорость'
print(i)
if (text == i):
    print("Match")
else :
    print("Not Match")

哪些输出:

Фред скорасть
Сред. Скорость
Not Match

这意味着单词并不完全匹配,但考虑到最少的编码工作和输入图像的糟糕质量,它认为性能相当惊人。无论如何,这个例子表明编码和解码应该不再是一个问题。

【讨论】:

  • 这就是我现在所面临的。这不正确匹配。我怀疑 pytesseract 没有正确进行 OCR,或者我们需要指示 pytesseract 提取俄语文本。
  • 嗯,这与您最初的编码-解码问题完全无关。如果库仅用于识别 ascii 字符并强制使用这些字符,则 python 级别的编码和解码都无济于事。
  • 我发现代码中根本没有考虑语言包。所以它只是将俄语文本视为英语并尝试与之匹配。我尝试在代码中提及语言,例如“ text = (pytesseract.image_to_string(img), lang='rus') ”。但它会抛出类似“UnicodeEncodeError: 'charmap' codec can't encode characters In position 0-3: character maps to 之类的错误
  • 这只是表明尚未切换到python 3。您可以在上面找到解决您问题的精致答案。如前所述,请确保您使用的是 python3。很容易切换到 anaconda 或其他虚拟环境。
  • 这一切都与系统编码有关。 Tesseract 计算一切正常,但 windows 无法正确显示。看看您的窗口的 IDE 编码是什么,并尝试将其设置为 utf8-ish,您应该也可以在 Windows 上使用!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-03-02
  • 2021-07-07
  • 2020-05-01
  • 2020-06-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多