我正在使用 pytessaract 将车牌图像转换为文本,如下所示
tools = pyocr.get_available_tools()
if len(tools) == 0:
print("No OCR tool found")
exit(1)
# The tools are returned in the recommended order of usage
tool = tools[0]
print("Will use tool '%s'" % (tool.get_name()))
# Ex: Will use tool 'libtesseract'
langs = tool.get_available_languages()
print("Available languages: %s" % ", ".join(langs))
lang = langs[0]
print("Will use lang '%s'" % (lang))
这就是我的阅读方式,我将所有可能的字符列入白名单
text = pytesseract.image_to_string(Image.open('images/text.jpg'), config= "-c tessedit_char_whitelist=0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ")
现在 pytessaract 正在阅读此内容,就像在寻找字典单词一样 这给出的结果不太理想 有一种方法可以转换字典单词,但我不知道如何在 python 中做到这一点,这是我的问题 谢谢
最佳答案
添加禁用系统和频繁 DAWG 的配置文件
load_system_dawg F
load_freq_dawg F
配置文件应放置在tessdata/configs
目录中(例如:tessdata/configs/config
)并在Init
过程中传递给tesseract .
我不是 100% 确信它是如何使用 pytesseract 完成的,但我相信你可以在这里详细说明。
init() 函数签名是这样的:
const char * datapath,
const char * language,
OcrEngineMode oem,
char ** configs,
int configs_size,
const GenericVector< STRING > * vars_vec,
const GenericVector< STRING > * vars_values,
bool set_only_non_debug_params
因此,您需要将configs
设置为指向“config”
和configs_size的指针
到 1
所以可能是类似的事情,您可以详细说明以使其正常工作:
api = tesseract.TessBaseAPI()
api.Init(".","eng",tesseract.OEM_TESSERACT_ONLY, POINTER(ctypes.c_char_p("config")), 1, None, None, False)
编辑:
另请注意,禁用 DAWG 可能无法解决您的问题。如果我是你 - 我会简单地迭代结果的替代方案并以最高置信度获取字母(如果 DAWG 搜索处于打开状态 - 默认字母并不总是具有最高置信度的字母)并更多地致力于提高输入图像质量,如 here 所述.
关于python - 关闭 pytessaract 的英语词典单词(对于 alpr 系统),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48915449/