gpt4 book ai didi

python - 如何使用python tesseract仅设置init参数?

转载 作者:行者123 更新时间:2023-12-04 11:15:38 30 4
gpt4 key购买 nike

我正在尝试使用 python-tesseract 包装器设置一些 Tesseract 参数,但是对于 Init Only 参数我无法这样做。

我一直在阅读 Tesseract 文档,看来我必须使用 Init() 来设置这些。这些是 setVariable 文档对此的说明:

Only works for non-init variables * (init variables should be passed to Init()).



所以 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

我的代码如下:
import tesseract

configVec = ['user_words_suffix', 'load_system_dawg', 'load_freq_dawg']
configValues = ['brands', '0', '0']

api = tesseract.TessBaseAPI()
api.Init(".","eng",tesseract.OEM_TESSERACT_ONLY, None, 0, configVec, configValues, False)
api.SetPageSegMode(tesseract.PSM_AUTO_OSD)
api.SetVariable("tessedit_char_whitelist", "€$0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz,.\"-/+%")

问题是我收到以下错误:
NotImplementedError: Wrong number or type of arguments for overloaded function 'TessBaseAPI_Init'.
Possible C/C++ prototypes are:
tesseract::TessBaseAPI::Init(char const *,char const *,tesseract::OcrEngineMode,char **,int,GenericVector< STRING > const *,GenericVector< STRING > const *,bool)

这个问题与那些 GenericVectors 有关。如果我改用这条线:
api.Init(".","eng",tesseract.OEM_TESSERACT_ONLY, None, 0, None, None, False)

有用。所以问题是那些 GenericVectors。如何将正确的参数传递给 Init()?

有没有其他方法可以在代码中设置 init only 参数?
我可以使用这些参数从代码中加载配置文件吗?

感谢您的时间,非常感谢您的帮助。

最佳答案

对于直接与 API 交互的场景,我执行了以下操作:

# This should be specified in the cffi.cdef
BOOL TessBaseAPISetVariable(TessBaseAPI *handle, const char *name, const char *value);

# This should be called afterwards, outside the cdef
# baseapi.h - Params (aka variables) must be done after init line above
# tesseractclass.h - Has list of settable variables like tessedit_char_whitelist
foundVariableName = libtess.TessBaseAPISetVariable(api, 'tessedit_char_whitelist'.encode(), 'ABFGJKLMNOPRSTYZ1234567890/.,-+ |\\'.encode())
print(foundVariableName) # returns 1 is successfully found, 0 if variable name not found

关于python - 如何使用python tesseract仅设置init参数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32528692/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com