这个程序演示设置一个配置文件,以提高识别的正确率。
输入图片比较长,截图成了好几段。
可以看到输入图片是有规律的,2个字母+4个数字+1个字母。
人眼很容易看出来这个规律,但是识别程序它不知道有这个规律,就可能会出现识别错误。
在截图里,数字0中间有一个点,是up专门设置的字体以显示字母O和数字0的区别。
左边的输出结果是没有加载用户自定义的模板的结果,可以看到第四行里数字0被识别成了字母O.
本来是0363,现在变成了O363.
现在编写一个模板文件:
在这个文件里,\A代表字母,\d代表数字
右边的输出结果是加载了用户自定义的模板的结果,是正确的。
输入: Arial.png 待识别的图片
my.patterns.config 存储用户配置的文件名
my.patterns 存储用户自定义模式
代码:
#include <tesseract/baseapi.h> #include <leptonica/allheaders.h> int main() { Pix *image; char *outText; char *configs[]={"path/to/my.patterns.config"}; int configs_size = 1; tesseract::TessBaseAPI *api = new tesseract::TessBaseAPI(); if (api->Init(NULL, "eng", tesseract::OEM_LSTM_ONLY, configs, configs_size, NULL, NULL, false)) { fprintf(stderr, "Could not initialize tesseract.\n"); exit(1); } image = pixRead("Arial.png"); api->SetImage(image); outText = api->GetUTF8Text(); printf(outText); api->End(); delete api; delete [] outText; pixDestroy(&image); return 0; }