文字识别初探

统计代码

随着中国互联网对广告的审核越来越严格,日常投放运营过程中,渠道对资质文件和创意的要求越来越高,如营业执照、身份证等。我们需要花费大量的人力成本对这些文件的属性进行文本描述,如营业主题,姓名,生日等。有没有一种方案对文件进行快速的描述,减少人力成本?

另一方面,这个需求是具有可扩展性的。图形学方向上的人工智能,是建立在图像识别基础上。计算广告日后必然和图形学和人工智能强关联,正好探索这个方向的可行性,并把该躺的坑给躺一遍。

作为一个产品,会先对一些开源的框架以及开放的 API做基本的可行性调研。
随手Google之后,决定本地使用Tesseract观察目前OCR(Optical Character Recognition)引擎效果。

#reference-浅谈OCR之Tesseract
#reference-Tesseract:安装与命令行使用

** 安装**

通过homebrew安装到本地/usr/local/Cellar #reference-homebrew

brew install tesseract

** 直接识别**

尝试识别如下图片:


文字识别初探_第1张图片
文字识别原图

执行tesseract <%path_to_pic> stdout后得到。

文字识别初探_第2张图片
直接识别后结果

可以看到英文和数字的识别正确率很高,中文识别这么不靠谱?显然不是,不同语言的文字识别机制可能不一样。Google后发现需要指定语言后识别。由于我们的目标是中文识别,********必须解决语言包问题********。当然可以自行选择自己愿意安装的语言包,但最方便的是支持所有available的语言包。
重新执行brew install tesseract --all-languages 安装所有语言包。

#reference-Chinese OCR
#reference-利用Tesseract图片文字识别初探
#reference-ocr markdown

现在我们执行tesseract --list-langs,可以看到

$ tesseract --list-langs
List of available languages (107):
...
chi_sim
chi_tra
...

简繁体的中文识别目前都已经支持。由于是大陆环境,我们将主要是用简体中文语言包进行识别。

** 中文识别**

再次通过语言包尝试识别,执行tesseract <%path_to_pic> stdout -l chi_sim

文字识别初探_第3张图片
中文识别后结果

显然,准确率大大提高。虽然如此,可用性还是不足以支撑生产环境的需求。

** 分块后中文识别**

会不会因为单词识别文本太多,导致识别不够准确呢?毕竟即使是人,当看到一大块文本的时候也感到头晕目眩。我们把原文本一分为三后,再次识别。

文字识别原图1
文字识别原图3
文字识别原图2
文字识别初探_第4张图片
分块后中文识别结果

显然准确率有所提高。虽然也还是无法使用:(

** 如何分块**

那么我们应该如何对一张图片中的文本作分块呢?简单来说,就是利用opencv,看出来白色的色块 然后定位做文字识别。

文字识别初探_第5张图片
Paste_Image.png

后续探索

后续可以进行探索的方向:

  • OCR 中文识别用哪种软件识别率比较高?
  • image++api
  • 如何更合适地对图片的文本区域分块
  • 根据图片直接判断语言

原文发布于:文字识别初探

你可能感兴趣的:(文字识别初探)