关闭 pytessaract 的英语词典单词(对于 alpr 系统)
Turning off English dictionary word for pytessaract (for an alpr system)
我正在使用 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"
和[=19=的指针] 到 1
所以可能是这样的,你可以详细说明让它工作:
api = tesseract.TessBaseAPI()
api.Init(".","eng",tesseract.OEM_TESSERACT_ONLY, POINTER(ctypes.c_char_p("config")), 1, None, None, False)
编辑:
另请注意,禁用 DAWG 可能无法解决您的问题。如果我是你 - 我会简单地遍历结果的备选方案并以最高的置信度获取字母(如果 DAWG 搜索打开 - 默认字母不会总是具有最高置信度的字母)并更多地提高输入图像质量,如所述here.
我正在使用 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"
和[=19=的指针] 到 1
所以可能是这样的,你可以详细说明让它工作:
api = tesseract.TessBaseAPI()
api.Init(".","eng",tesseract.OEM_TESSERACT_ONLY, POINTER(ctypes.c_char_p("config")), 1, None, None, False)
编辑:
另请注意,禁用 DAWG 可能无法解决您的问题。如果我是你 - 我会简单地遍历结果的备选方案并以最高的置信度获取字母(如果 DAWG 搜索打开 - 默认字母不会总是具有最高置信度的字母)并更多地提高输入图像质量,如所述here.