[英]Python - Improving Tesseract OCR to recognize list of names
我正在做一个项目,该项目将识别游戏(守望先锋)中的团队并记录哪些玩家在哪个团队中。 它有一个预定义的播放列表,它只需要识别他们所在的图像。 到目前为止,我已经成功地为每支球队拍摄了图像并粗略地输出了每个球员的名字,但是,它让几个字母混淆了。
我的输入图像:
我从 OCR 得到的输出:
W THEMIGHTVMRT
ERSVZENVRTTR
ERSVLUCID
ERSVZRRVR
ERSVMEI
EFISVSDMBRR
ERSV RNR
ERSVZENVRTTR
EFISVZHRVR
ERSVMCCREE
ERSVMEI
EHSVRDRDHDG
由此,您可以看到 OCR 将“A”与“R”和“Y”与“V”混淆。 我能够获得守望先锋使用的字体文件并使用训练你的 Tesseract生成一个 .traineddata 文件 - 我知道可能有更好的方法来生成这个文件,但我不确定如何。
我的代码:
from pytesseract import *
import pyscreenshot
pytesseract.tesseract_cmd = 'C:/Program Files (x86)/Tesseract-OCR/tesseract'
tessdata_dir_config = '--tessdata-dir "C:\\Program Files (x86)\\Tesseract-OCR\\tessdata"'
team1 = pyscreenshot.grab(bbox=(50,450,530,810)) # X1, Y1, X2, Y2
team1.save("team1screenshot.png")
team1text = pytesseract.image_to_string(team1, config=tessdata_dir_config, lang='owf')
team2 = pyscreenshot.grab(bbox=(800,450,1280,810)) # X1, Y1, X2, Y2
team2.save("team2screenshot.png")
team2text = pytesseract.image_to_string(team2, config=tessdata_dir_config, lang='owf')
print(team1text)
print("------------------")
print(team2text)
我应该如何提高对这些字符的识别? 我需要更好的 .traineddata 文件,还是关于更好的图像处理?
感谢您的帮助!
正如@FlorianBrucker 所提到的,对字符串进行相似性测试可以(通过一些微调)在 OCR 级别之后找到正确的字符串。
您可以尝试使用自定义 OCR 配置来进行稀疏文本搜索,“以无特定顺序查找尽可能多的文本”。
在 tesseract 配置中将 psm 设置为 11
看看你是否可以这样做:
tessdata_dir_config = "--oem 3 --psm 11"
要查看支持的页面分段模式 (psm) 的完整列表,请使用 tesseract -h。 这是截至 3.21 的列表:
我正在为 Tesseract https://github.com/madmaze/pytesseract使用 python 包装器
在这里,您可以将 tesseract 配置为:
custom_oem_psm_config = r'--oem 3 --psm 6'
pytesseract.image_to_string(image, config=custom_oem_psm_config)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.