Skip to content

Latest commit

 

History

History
92 lines (59 loc) · 4.85 KB

文字识别初探.md

File metadata and controls

92 lines (59 loc) · 4.85 KB
title date tags
文字识别初探
2016-10-08 04:57:23 -0700
文字识别
tesseract
OCR
开源

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

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

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

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

安装

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

brew install tesseract

直接识别

尝试识别如下图片: 文字识别原图

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

直接识别后结果

可以看到英文和数字的识别正确率很高,中文识别这么不靠谱?显然不是,不同语言的文字识别机制可能不一样。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

中文识别后结果

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

分块后中文识别

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

文字识别原图1

文字识别原图3

文字识别原图2

分块后中文识别结果

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

如何分块

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

Paste_Image.png

#后续探索

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

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