关闭 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.