一、OCR引擎比较
1. 优图OCR (腾讯)
https://ai.qq.com/product/ocr.shtml#common
免费API:https://api.ai.qq.com/fcgi-bin/ocr/ocr_generalocr
该引擎专注于行识别,识别结果准确度高达98%,误识率较低,以文本形式输出。
(有开放免费的API,没找到开源项目,似乎是个在线服务)
2. Tesseract OCR(Google)
https://github.com/tesseract-ocr/tesseract#about
有三个数据集可供选择:
tessdata-best准确度最高,速度最慢https://github.com/tesseract-ocr/tessdata_best
tessdata准确度中等,速度中等https://github.com/tesseract-ocr/tessdata
tessdata-fast准确度最低,速度最快https://github.com/tesseract-ocr/tessdata_fast
优点:开源且有中文语言包,有.NET和Java的demo,简洁易懂,适合作为入门教程,编程实现简单,它自己提供了训练样本的方法,可以生成自己所需的识别语言库。支持票据识别。
缺点:针对文字、数字、英文等需要进行分类识别保证识别准确性;当中英文数字符号等组合识别时,识别效果不够理想,对于特殊符号误识别率较高,易出现乱码情况,识别速度较慢。通过命令行语句执行识别,没有特定的界面,默认输出是.txt格式。
推荐指数:⭐⭐⭐⭐
3. cnocr+cnstd
https://github.com/breezedeus/cnocr
https://github.com/breezedeus/cnstd
https://zhuanlan.zhihu.com/p/60767671
优点:极简的中文OCR Python包,目前使用的识别模型是crnn,中文识别能力好,误识率较低,识别准确度约为 98.7%。
推荐指数:⭐⭐⭐⭐
4. 树洞OCR(天若OCR演化版)
https://github.com/AnyListen/tools-ocr
优点:支持表格识别, 文字识别使用了各云平台开发的识别接口,因此需要联网才能正常使用;使用 JavaFX 开发,使用前必须装 Java8 运行环境(完整版无需安装 Java8)
缺点:对环境依赖较高。
5. calamari
https://github.com/Calamari-OCR/calamari
论文:https://arxiv.org/abs/1807.02004
优点:Calamari是一种新的开源OCR识别软件,它使用了最先进的Tensorflow实现的深度神经网络(DNN)。 提供了预训练模型和多模型投票技术。由卷积神经网络(CNNS)和长短时记忆(LSTM)层构成的可定制网络架构通过Graves等人的连接时间分类(CTC)算法进行训练。而GPU的使用大大减少了训练和预测的计算时间。使用两个不同的数据集来比较Calamari与OCRopy,OCRopus3和Tesseract 4的性能.Calamari在用现代英语写的UW3数据集上达到0.11%的字符错误率(CER),在用德语写的DTA19数据集上达到0.18% 错误率,其性能远远优于以上现有开源软件的结果。
使用了目前OCR最先进的的技术,CNN+LSTM+CTC+voting。
calamari OCR引擎,使用Python3编写,基于OCRopy和Kraken构建,它的设计使你既可以方便的使用命令行运行,也可以把它模块化嵌入到其他python脚本中。
环境依赖:Python3 、 Tensorflow1.8
英文编写的字符错误率(CER):0.11%
德语误识率:0.18%
⚠注意:该库主要是用来识别印刷体古籍文字,在自然场景图像上的识别并没有实验说明。
推荐指数:⭐⭐⭐⭐⭐
6. GOCR
https://github.com/SureChEMBL/gocr
http://jocr.sourceforge.net/
命令行工具,有JS移植,可用于前端。
7. xNN-OCR
xNN-OCR是专门针对移动端本地识别研发的的高精度、高效率、轻体量文字识别引擎,目前支持场景数字、场景英文、场景汉字以及特殊符号的识别。xNN-OCR针对移动端开发和优化了一套基于深度学习的文字检测和文字行识别算法框架,结合xNN的网络压缩和加速能力,检测和识别模型可以压缩到数百K级别,在中端及以上手机CPU上达到实时(最高15FPS),可结合“扫一扫”的模式在视频流中做到所见即所得。xNN-OCR目前在端上已经能较好的识别场景数字、英文以及部分汉字,无论是模型大小、速度、准确度均已达到工业应用的水平,并且全面超过基于传统算法识别的OCR端上应用,在多个实际应用项目中对比得以验证。
8. Microsoft OCR Library
Windows8.1之后的版本内置OCR引擎,可用于桌面WindowsPhone。
https://github.com/A9T9/Free-OCR-Software
推荐指数:⭐⭐⭐
9. ocropy
https://github.com/tmbarchive/ocropy
基于训练的OCR引擎,训练后可以达到比Tesseract更高的准确度,项目比Tesseract更年轻,它包含一个叫做OCRopus的布局分析器。
推荐指数:⭐⭐⭐⭐
10. ocrad
https://www.gnu.org/software/ocrad/
https://github.com/matiastucci/ionic-ocr-example
命令行工具。有JS移植,可用于前端。
推荐指数:⭐⭐⭐
11. simple-ocr-opencv项目
简单却不太成熟:一个使用opencv和numpy的简单的pythonic
OCR引擎
https://github.com/goncalopp/simple-ocr-opencv
推荐指数:⭐
12. deep_ocr项目
https://github.com/JinpengLI/deep_ocr
优点:基于caffe的识别效果,且代码比tesseract短很多。
缺点:暂时不是很稳定,需要加一些语义模型等进行优化。
13. Free
Offline OCR离线的中文文本检测+识别SDK
https://github.com/myhub/tr
优点:误识率较低,基本都能正确识别且保持原图文本排版样式,支持竖排文字识别。
推荐指数:⭐⭐⭐⭐
14. ocular
https://github.com/tberg12/ocular/
优点:Ocular是最先进的历史OCR系统。
它的主要特征是:无监督学习未知字体:仅需要文档图像和文本语料库。处理嘈杂文件的能力:不一致的着墨,间距,垂直对齐等.支持多语言文档,包括具有大量单词级代码转换的文档。拼写变化模式的无监督学习,包括过时的拼写和打印机速记。同时联合翻译成外交(文字)形式和规范化形式。
二、总结
综上所述,就现有开源OCR引擎来说,calamari引擎识别准确性相对较高,误识率相对较低,识别速度较快,识别性能较好,值得一试。