Tesseract收据价格识别丢失问题排查与优化建议请求
问题背景与环境
- 针对arm64-v8a架构编译了包含Leptonica、libjpeg、libpng、libturbojpeg依赖的Tesseract动态库(.so文件)
- 用于识别的Pix对象来自800万像素拍摄图像,裁剪后尺寸为1595×2121
- 核心需求:识别俄文收据中的价格(对应priceselected.jpg),无法展示原图,处理前后图像对应leptonicaaddimage和leptonicaprepareimage
图像预处理流程
应用了以下Leptonica滤镜及参数:
// 中值滤波 leptonica.pixMedianFilter( pixs:pix1, halfWidth = 1, halfHeight = 1);
// RGB转灰度(权重全为0) _leptonica.PixConvertRGBToGray(pixs:pix2, rwt = 0.0, gwt = 0.0, bwt = 0.0);
// 灰度形态学闭运算 _leptonica.pixErodeGray(pixs:pix3, hsize: 5, vsize: 7); _leptonica.pixDilateGray( pixs:pix4, hsize : 5, vsize : 7);
// Gamma校正 _leptonica.GammaTRC( NULL, // 生成新Pix pixs: pix5, gamma: 0.7f, minval : 40, maxval : 210);
// Sauvola自适应阈值 _leptonica.AdaptiveThresholdSauvola( pixs: pix6, whsize:11, factor:0.15f);
Tesseract配置与变量
- 版本:5.5.1-16-g17b4,使用
tessdata_best数据集,仅启用LSTM模式(oem=1) - 初始化与配置代码:
Tesseract.TessBaseAPICreate(); Tesseract.TessBaseAPIInit2(_handle, dataPath, language:"rus", oem:"1"); Tesseract.TessBaseAPISetPageSegMode(_handle, pageSegMode:"6 or 3");
- 自定义变量:
user_defined_dpi= 图像宽度/实际宽度 = 1821/3.15 = 578tessedit_char_blacklist="\\|@#$^&_=<>~{}[]"`
识别处理流程
Tesseract.TessBaseAPISetImage2(_handle, pix); TesseractNative.TessBaseAPIGetUTF8Text(_handle);
当前识别结果
1721822 Вафли СЛИВОЧНЫЕ ‘РЛОусПеК те ЭГ 99 Зй 2217431 Кокт, мол. ТОП ЛАВ” (клуб- ан? 50 (Н) ' 1842023 Коктейль мол”ТОП”(2%, пломбир, П 50г 2,29 Скидка бонусы Еплюс ‚08 Г! 1350399 Сыр'БРЕСТ-ЛИТОВСК ПОШЕХОНСКИЙ” 200г 4,59 Скидка бонусы Еплюс -0,05 ИТОГО К ОПЛАТЕ 12,05 УТОГО СКИДКА ы 0,13
存在的问题
- 无法识别如2.99、2.35这类完整价格,仅能识别出类似0.08的部分
- 收据尺寸越大,丢失的价格数字越多
- 寻求提升识别质量的优化建议及问题排查方向
内容的提问来源于stack exchange,提问作者magister
相关产品推荐
相关产品推荐

