使用python进行Pytesseract外语提取

Dee*_*Raj 2 python unicode ocr

我在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"
Run Code Online (Sandbox Code Playgroud)

附加用于提取文本的图像.

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

俄罗斯文本图像

Mar*_*erc 9

您正在使用的Tesseract比英语以外的语言,所以首先要确保,你已经学习数据集安装在您的语言,因为它显示在这里(仅适用于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")
Run Code Online (Sandbox Code Playgroud)

哪个输出:

???? ????????
????. ????????
Not Match
Run Code Online (Sandbox Code Playgroud)

这意味着单词并不完全匹配,但是,考虑到最小的编码工作量和输入图像的可怕质量,它认为性能非常惊人.无论如何,该示例表明编码和解码应该不再是问题.

  • 这一切都与系统编码有关。Tesseract 计算一切正常,但 Windows 无法正常显示。看看你的窗口的 IDE 编码是什么,并尝试将其设置为 utf8-ish,你应该也可以在 Windows 上运行! (2认同)