OCR(按照识别率从低到高排序)
Cuneiform for Linux —— 本来是个Windows软件,这是Linux的移植,2011年4月已经停止维护。
GNU Ocrad —— 命令行工具。有JS移植,可用于前端。
GOCR —— 命令行工具。有JS移植,可用于前端。
Tesseract —— 开源OCR引擎,也有命令行工具。HP开发Google接手。3.0之后支持训练。 Golang绑定 。 入门教程 。
OCRopy —— 基于训练的OCR引擎,训练后可以达到比Tesseract更高的准确度,项目比Tesseract更年轻。包含一个叫做OCRopus的布局分析器。in Python。
Microsoft OCR Library —— Windows8.1之后的版本内置OCR引擎,可用于桌面和WindowsPhone。
Abbyy —— 收费软件,有SDK,有Cloud版本。
预处理
OpenCV —— 图像处理老大哥。OpenCV3中有Scene Text Detection值得一用。
Libccv —— 现代图像处理库,被很多人推荐。实现了精选的若干个图像处理算法,干净容易移植。其中 Stroke Width Transfor 尤其有用。
lswms —— 分行检测。
OCRopus —— 基于神经学习网络算法的布局分析库。 教程 。
unpaper —— 检测文字和旋转,用的是 Hough transform 算法。
Scene Text Detection
高层项目
node-dv —— in Node.js,整合了OpenCV、Tesseract和一些其他项目。
node-fv —— node-dv的更高层,用于证件识别。
OpenOCR —— 包装了SWT、Tesseract、Docker、RabbitMQ,提供队列和HTTP访问服务。in Golang。
openalpr —— 包装了Tesseract和OpenCV,支持多系统build,支持Docker,有Python和Node.js绑定。
百度OCR
API 值得借鉴学习。
关于移动端
tess-two ,Tesseract的安卓移植, 教程 。
microblink ,免费的移动OCR-SDK。
新方法:机器学习
如果有够多的样本和验证能力,机器学习可以很好的处理OCR的问题。
http://www.danvk.org/2015/01/09/extracting-text-from-an-image-using-ocropus.html
http://www.danvk.org/2015/01/11/training-an-ocropus-ocr-model.html
https://en.wikipedia.org/wiki/Long_short_term_memory
https://github.com/nypl/map-vectorizer
一个快速深度学习的框架,和基于它构建的OCR项目。
https://github.com/BVLC/caffe/
https://github.com/pannous/caffe-ocr
JS构建的神经学习网络https://github.com/mateogianolio/mlp-character-recognition
顺便
ImageMagick —— 实现PDF、PNG、TIFF之间的格式转换。
Apache Tika —— 从HTML、Word、Pdf、Excel、PPT、Zip等文档中提取内容的类库,in JAVA。