基于Tesseract-OCR4.0及VS2015的多字库扫描图像文字识别

(1)问题描述

最近项目中遇到一个问题,扫描印刷体文字识别,其中需要识别的文字包括中文、拉丁文、英文。本来以为很轻松的利用开源库OCR就可以解决,结果使用Tesseract-OCR4.0同时导入多个字库进行识别,识别精度却惨不忍睹。找来Tesseract帮助文档关于初始化语言包的函数Init()的说明,其中有这样一段话:“The number of loaded languages is limited only by memory, with the caveat that loading additional languages will impact both speed and accuracy, as there is more work to do to decide on the applicable language, and there is more chance of hallucinating incorrect words.”。也就是说Tesseract虽然支持多语言的识别,且能载入多少语言包受内存的限制,但是使用多语言包速度和准确度都会下降。

(2)解决方法以及使用Tesseract的经验

鉴于帮助文档中的说明,于是测试了将文件中的中文、拉丁文、英文分别裁出一部分进行识别,结果每一部分的识别精度都很高,速度也比使用多字库提高不少。针对识别的文件具有固定的排版,各个语言的在文件中的交叉混淆比较少,因此制定了对文件按字体进行分割,分别识别的策略。在文本图像的裁剪过程中,四边形框不能贴合的太紧密,文字块的四周需要留出一些空白,否则会导致识别错误。在文字的识别过程中,识别的文字为UTF8编码,在VS2015调试的过程中显示为乱码,最好把结果进行转码,方便调试。

项目中遇到的需要识别的文件图像如下所示,由于不方便显示具体内容,图像做了处理。总体如下,即需要识别的扫描文件排版为6列,第一列和第四列为英文和中文的混合,2、3、5、6列为拉丁文,列可能有缺失。具体的操作方法为:扫描文件的文字部分提取(整页)->图像旋转为水平->行投影、列投影获得文字列、行的位置(粗分割)->根据行进行切割,对行图像进行二值化轮廓提取->列匹配(精分割)->对第一列按高度进行字体分类,并分别采用中文、英文进行识别,对2、3、5、6使用拉丁文进行识别->识别结果进行转码并存储。

 

(3)程序(comimg soon)

  • 扫描文件页提取
  • 图像水平旋转
  • 行投影、列投影
  • 列匹配
  • 文字按高度分类
  • 分类识别

参考:

 

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值