OCR1:开源库
OCR (Optical Character Recognition,光学字符识别)是指电子设备(例如扫描仪或数码相机)检查纸上打印的字符,通过检测暗、亮的模式确定其形状,然后用字符识别方法将形状翻译成计算机文字的过程。优秀的开源OCR软件包括:
- Tesseract:原本由惠普开发的图像识别类库tesseract-ocr已经更新到2.04, 就是最近Google支持的那个OCR。原先是惠普写的,现在Open source了。
- OCRopus:Ocropus的(TM)是一个先进的文件分析和OCR系统,采用可插入的布局分析,可插入的字符识别,自然语言统计建模和多语言支持功能。
- Cuneiform:Cuneiform 是一个 OCR 文字识别系统的商标,最开始是由Cognitive 技术所开发的运行在 Windows 下的软件。而这个项目是该软件在 Linux 系统下的移植版本。
- GOCR:GOCR 是一个开源的OCR光学识别程序。
- OCRFeeder:OCRFeeder 是 GNOME 桌面下的一个开源 OCR 套件。可将纸质或者图形文档转成电子文档。
- Lios:linux-intelligent-ocr-solution (Lios) 是Linux下一个开源的 OCR 解决方案,可将打印的文档转成可编辑的文本。
云服务商提供服务:
- 百度OCR: https://cloud.baidu.com/doc/OCR/OCR-Python-SDK.html
- Azure图像识别:https://azure.microsoft.com/zh-cn/services/cognitive-services/computer-vision/
- 阿里云OCR: https://www.aliyun.com/product/cdi/
- 腾讯OCR:https://cloud.tencent.com/product/ocr
OpenCV VS tesseract:
- opencv:专注机器视觉
- tesseract:专注字符识别
由于tesserocr在windows环境下会出现各种不兼容问题,并且与pycharm虚拟环境不兼容等问题,所以在windows系统环境下,选择pytesseract模块进行安装
Tesseract
Tesserocr 是Python的一个OCR库,但其实是对tesseract做的一层Python API的封装,所以他的核心是tesseract。因此,在安装tesserocr之前,我们需要先安装tesseract。 实际使用tesseract ocr也有两种方式:1- 动态库方式 libtesseract 2 - 执行程序方式 tesseract.exe
安装过程:
- 在Windows下,首选需要下载tesseract,它为tesserocr提供支持,在“https://digi.bib.uni-mannheim.de/tesseract/” ,然后选择3.05.02版本进行下载。其中文件名中带有 dev 的为开发版本,不带 dev 的为稳定版本,可以选择下载不带 dev 的版本,例如可以选择下载tesseract-ocr-setup-3.05.02-20180621.exe
- 如果不是做英文的图文识别,还需要下载其他语言的识别包 https://github.com/tesseract-ocr/tessdata下载
安装Tesseract
- 下载Tesseract-OCR引擎,注意要3.0以上才支持中文哦,按照提示安装就行。
- 既然是要训练中文,记得勾选 additional language data,如下图:

找到中文简体和中文繁体,按需勾选,然后点下一步。可以先不勾选,因为这样直接下载语言的包实在太慢。可以从网页上直接下载语言包,然后等程序安装好后,放入安装目录下tessdata目录下面,如下图:

配置:
- 在环境变量的系统变量和个人用户的PATH,把tesseract-ocr的安装路径(如 C:\Program Files (x86)\Tesseract-OCR;)添加进去

- 在windows系统你还需要将testdata目录也加入环境变量,TESSDATA_PREFIX=C:\Program Files (x86)\Tesseract-OCR\tessdata

验证安装:
- 打开命令终端,输入:tesseract -v,可以看到版本信息

落地验证:
- 直接下载:https://raw.githubusercontent.com/Python3WebSpider/Testtess/master/image.png 然后,将图片下载下来并保存为image.png,然后使用tesseract命令进行测试
- 命令:tesseract image.png 1 (image.png 代表待识别的源文件,1代表输出文件名,默认输出格式是txt文件格式!)

python用tesseract-ocr做图像识别
需要导入两个库,这是别人写好的封装好的库文件。
- 需要用到两个库:pytesseract和PIL
- 还需要安装识别引擎tesseract-ocr
Python-tesseract: 是Tesseract OCR引擎的Python封装类。能够读取任何常规的图片文件(JPG, GIF ,PNG , TIFF等)并解码成可读的语言。在OCR处理期间不会创建任何临文件
PIL (Python Imaging Library):是 Python 中最常用的图像处理库。
python对图像的处理比较常见的是用 pytesseract 识别验证码,要安装pytesseract库,必须先安装其依赖的 PIL 及 tesseract-ocr,其中PIL为图像处理库,而后面的tesseract-ocr则为google的ocr识别引擎。
- 命令:pip install pillow 目前PIL的官方最新版本为1.1.7,支持的版本为python 2.5, 2.6, 2.7,并不支持python3,经查询python3.X用pillow代替,进入DOS命令行窗口,敲入以下代码
- 命令:pip install pytesseract
示例代码:
import pytesseract
from PIL import Image as img text = pytesseract.image_to_string(img.open('image.png'))
print(text)
示例结果:
带中文图片示例(示例图片是从百度图片上下载的):
中文效果并不理想,下一节介绍训练过程
相关链接:
- tesserocr GitHub: https://github.com/sirfz/tesserocr
- tesserocr PyPI: https://pypi.python.org/pypi/tesserocr
- tesseract 下载地址: https://digi.bib.uni-mannheim.de/tesseract/
- tesseract GitHub : https://github.com/tesseract-ocr/tesseract
- tesseract 语言包 : https://github.com/tesseract-ocr/tessdata
- tesseract 文档 : https://github.com/tesseract-ocr/tesseract/wiki/Documentation
参考资料:
- https://www.itcodemonkey.com/article/4516.html
- https://www.oschina.net/news/40027/6-opensource-ocr-tools
- https://testerhome.com/topics/16305
- https://www.cnblogs.com/wj-1314/p/9428909.html
- https://segmentfault.com/a/1190000012861561
OCR1:开源库的更多相关文章
- 【踩坑速记】开源日历控件,顺便全面解析开源库打包发布到Bintray/Jcenter全过程(新),让开源更简单~
一.写在前面 自使用android studio开始,就被它独特的依赖方式:compile 'com.android.support:appcompat-v7:25.0.1'所深深吸引,自从有了它,麻 ...
- Java下好用的开源库推荐
作者:Jack47 转载请保留作者和原文出处 欢迎关注我的微信公众账号程序员杰克,两边的文章会同步,也可以添加我的RSS订阅源. 本文想介绍下自己在Java下做开发使用到的一些开源的优秀编程库,会不定 ...
- 第三方开源库和jar包的区别
jar包和第三方开源库的根本区别在于,开源库的功能比jar包功能更强大,通过引入库项目可以访问java文件以及该开源库项目下的资源文件,例如图片,layout等文件 jar包中只能放class文件 引 ...
- 【转】用JitPack发布开源库时附加文档和源码
来自:http://www.gcssloop.com/course/jitpack-sources-javadoc 用JitPack发布开源库时附加文档和源码 很早之前写过一篇用JitPack发布An ...
- libCURL开源库在VS2010环境下编译安装,配置详解
libCURL开源库在VS2010环境下编译安装,配置详解 转自:http://my.oschina.net/u/1420791/blog/198247 http://blog.csdn.net/su ...
- GitHub上那些值得一试的JAVA开源库--转
原文地址:http://www.jianshu.com/p/ad40e6dd3789 作为一名程序员,你几乎每天都会使用到GitHub上的那些著名Java第三方库,比如Apache Commons,S ...
- .NET蓝牙开源库:32feet.NET
在用C#调用蓝牙编程一文中我留个小悬念就是:InTheHand.Net.Personal.dll是怎么来的?这篇文章来解答这个问题,InTheHand.Net.Personal.dll就是来源于今天要 ...
- Android Studio 简介及导入 jar 包和第三方开源库方[转]
原文:http://blog.sina.com.cn/s/blog_693301190102v6au.html Android Studio 简介 几天前的晚上突然又想使用 Android Studi ...
- 快快快!27个提升效率的iOS开源库推荐
文章来源:http://www.csdn.net/article/2015-07-21/2825264-27-ios-open-source-libraries/1 我热爱开源,更喜爱那些花费宝贵的业 ...
- 开源库Magicodes.WeChat.SDK总体介绍
目录 1 概要 1 2 主要特点 2 3 架构图 8 3.1 构造器——WeChatSDKBuilder 8 3.2 函数管理器——WeChatF ...
随机推荐
- 踩iviewui中Select 选择器两级联动,重置查询条件时第二级数据无法清除的坑
小颖公司最近做的项目用的vue+iviewui+axios,在做项目的过程中,遇到一个问题: 二级联动的下拉框,第一个下拉框一直都有值,第二个下拉框是在选择了第一个下拉框之后采取调用ajax获取其值, ...
- Kali系统改国内源配置和SSH配置
一.Kali系统更新源 使用官网的虚拟化镜像安装,默认为英文界面,更新源也是官方源.因为官方服务器在国外,速度不是很理想,现在就来改国内源并且更新系统. 1.使用编辑器打开系统源文本(在终端内操作,先 ...
- django -- 安装django
安装 通过cmd进行安装 pip3 install django==1.11.11 创建django项目 通过命令行进行创建 下面的命令创建了一个名为"mydjango"的Djan ...
- 网络编程——sockaddr 与 sockaddr_in
struct sockaddr 这个结构体是linux的网络编程接口中用来表示IP地址的标准结构体,bind.connect等函数中都需要这个结构体,这个结构体是兼容IPV4和IPV6的. 在实际编程 ...
- android studio 配置相关问题
1:Unknown AVD name, use -list-avds to see valid list. 下午1:26 Emulator: emulator: ERROR: Unknown A ...
- ZROI 暑期高端峰会 A班 Day3 图论
最短路 NOI2019 D2T1 弹跳 KD 树 线段树套set -> 线段树套并查集? POI2014/2015 ??? \(n\) 个点 \(m\) 条边 DAG.求删掉每个点后 \(1\) ...
- C++ 重写虚函数的代码使用注意点+全部知识点+全部例子实现
h-------------------------- #ifndef VIRTUALFUNCTION_H #define VIRTUALFUNCTION_H /* * 派生类中覆盖虚函数的使用知识点 ...
- MySQL 执行插入报错 - Incorrect string value: '\xE4\xB8\xAD\xE6\x96\x87' for column 'name' at row 1
报错的原因就是在执行插入时对Name这个字段被赋予了错误的字符串值:’\xE4\xB8\xAD\xE6\x96\x87’ 实际上就函数里面的变量接收到的值编码格式跟它定义的不一致. 使用navica ...
- Gamma阶段第九次scrum meeting
每日任务内容 队员 昨日完成任务 明日要完成的任务 张圆宁 #91 用户体验与优化https://github.com/rRetr0Git/rateMyCourse/issues/91(持续完成) # ...
- java 执行 shell脚本通过mysql load data导入数据
1:load_data_test.sh #!/bin/sh load_data_log=/mnt/load_data_test/load.log load_sql="LOAD DATA LO ...

