深入学习使用ocr算法识别图片中文字的方法

  公司有个需求,简单点说需要从一张图片中识别出中文,通过python来实现,当然其他程序也行,只要能实现,而小编主要学习python,所以就提了python。一个小白在网上遨游了一天,终于找到一丝丝思绪,特意在此分享,希望大神提出宝贵的意见。

  今天还是在学习OCR算法中,但是好像自己摸索确实比较难一点,而且python实现图片中文识别的方法还是不多,所以我打算记录一下自己学习的过程。今天看到一个菜鸟都可以用的开源项目,那就是OCR开源项目tesseract,可能对于还是菜鸟的我来说,最好不过了,可以试试此项目,还可以看看源码,何乐而不为呢!

  OCR开源项目很多,给大家一个链接,这个链接列出了现有的比较出名的OCR开源项目,链接如下:

https://en.wikipedia.org/wiki/Comparison_of_optical_character_recognition_software

  从上面的排名可以看到,Tesseract是排在第一名的!所以下面就认真学习一下Tesseract。首先介绍一下Tesseract,然后安装,测试,了解其不足等等。

     Tesseract的OCR引擎目前已作为开源项目发布在Google Project,
其项目主页在这里查看https://github.com/tesseract-ocr, 

    它支持中文OCR,并提供了一个命令行工具。python中对应的包是
pytesseract. 通过这个工具我们可以识别图片上的文字。

一    Tesseract的安装测试使用

1.1   小编的开发环境如下:

  • windows 7
  • python 3.6
  • pycharm

1.2   下载安装包

  首先下载Tesseract在Windows下的安装版。(因为在国外访问不了谷歌,所以别人FQ下载了下来,这里给大家百度网盘链接)

http://pan.baidu.com/s/1i56Uxlr

  根据https://github.com/tesseract-ocr/tesseract/wiki,找到非官方的安装包,好像只看到64位的安装包    http://digi.bib.uni-mannheim.de/tesseract/tesseract-ocr-setup-4.00.00dev.exe,下载后直接安装即可,但是要记得你的安装目录,我们等会配置环境变量要用。

  如果不是做英文的图文识别,还需要下载其他语言的识别包https://github.com/tesseract-ocr/tesseract/wiki/Data-Files。

  简体字识别包:https://raw.githubusercontent.com/tesseract-ocr/tessdata/4.00/chi_sim.traineddata

  繁体字识别包:https://github.com/tesseract-ocr/tessdata/raw/4.0/chi_tra.traineddata

安装python对应的包:pytesseract

pip install pytesseract

1.3    安装Tesseract

  下载下来之后一路Next安装好,然后在开始菜单找到其控制台引导程序,如下图所示:

使用Tesseract ocr有两种方式:
    动态库方式 libtesseract和执行程序方式 tesseract.exe

    小编使用的是第二个方式,也方便Python调用(主要是小编比较菜)。

  

1.4   测试英文字符识别

  上面的安装包里自带了已经训练好的英文-拉丁文识别数据~所以我们先来测试一下英文字符的识别吧~识别图像如下:

1.4.1 把上面的图片放到Tesseract的安装目录下,如下图所示:

1.4.2  打开上面提到的控制台窗口,如下图所示:

1.4.3  在窗口中输入命令:“tesseract.exe 0.jpg 1”,并回车,如下图所示:

01.jpg代表待识别的源文件,1代表输出文件名,默认输出格式是txt文件格式!

注意,上面的 lang之前是-l 而不是-1!

1.4.4 让我们先查看一下01.jpg照片,如下图:

1.4.5  在安装目录下生成了1.txt文件,识别结果如下图所示:

  既然安装好了,测试也可以了,我们就进行实战,做图像识别。

二   python用tesseract-ocr做图像识别

  虽然说一行代码可以搞定识别图片,但是我们需要导入两个库,这是别人写好的封装好的库文件。只有导入人家库,我们才能识别一行代码实现图片文字。

  • 这里我们需要用到两个库:pytesseract和PIL
  • 同时我们还需要安装识别引擎tesseract-ocr

2.1   pytesseract和PIL的安装

  安装这两个包可以借助pip

- 1,命令行安装
pip install PIL
pip install pytesseract 

- 2,如果你用的pycharm编辑器,就可以直接借助pycharm实现快速安装。 

2.2  大概介绍下相关模块的概念

  Python-tesseract 是光学字符识别Tesseract OCR引擎的Python封装类。能够读取任何常规的图片文件(JPG, GIF ,PNG , TIFF等)并解码成可读的语言。在OCR处理期间不会创建任何临文件

  PIL (Python Imaging Library)是 Python 中最常用的图像处理库,目前版本为 1.1.7,我们可以 在这里 下载学习和查找资料。

  Image 类是 PIL 库中一个非常重要的类,通过这个类来创建实例可以有直接载入图像文件,读取处理过的图像和通过抓取的方法得到的图像这三种方法。

  python对图像的处理比较常见的是用pytesseract识别验证码,要安装pytesseract库,必须先安装其依赖的PIL及tesseract-ocr,其中PIL为图像处理库,而后面的tesseract-ocr则为google的ocr识别引擎。

    下载链接:http://www.waitalone.cn/python-php-ocr.html   

    该链接文档描述了如何配置相关环境,以及识别验证码的python代码,
总结起来就三步:    安装PIL.exe;
                           安装tesseract-ocr-setup.exe;
                           安装pip install pytesseract

2.3   解决python2.X中PIL在Python3.X中不能使用

  目前PIL的官方最新版本为1.1.7,支持的版本为python 2.5, 2.6, 2.7,并不支持python3,经查询python3.X用pillow代替,进入DOS命令行窗口,敲入以下代码

pip install pillow

  提示安装成功,再运行程序没有问题。

2.4 正式识别图片中的文字(包括简单的英文和复杂的英文)

2.4.1 下面进入正题,我们识别下面的东西,看图(两种情况):

2.4.2  python代码如下:  

import pytesseract
from PIL import Image

#打开验证码图片
image = Image.open(‘02.jpg‘)
#加载一下图片防止报错,此处可以省略
image.load()
#调用show来展示图片,调试用此处可以省略
image.show()
text = pytesseract.image_to_string(Image.open(‘02.jpg‘))
print(text)

2.4.3  查看运行结果,运行后,结果如下:

2.4.5 总结

  从上面我们可以发现,运行代码后的结果, 简单的图片识别率还是可以的,但是复杂的话 就...,所以希望自己继续学习,继续寻找有用的库。

三   Image模块的用法介绍(转)

3.1  简介

图像处理是一门应用非常广的技术,而拥有非常丰富第三方扩展库的 Python 当然不会错过这一门盛宴。PIL (Python Imaging Library)是 Python 中最常用的图像处理库,目前版本为 1.1.7,我们可以 在这里 下载学习和查找资料。

Image 类是 PIL 库中一个非常重要的类,通过这个类来创建实例可以有直接载入图像文件,读取处理过的图像和通过抓取的方法得到的图像这三种方法。

3.2  使用

导入 Image 模块。然后通过 Image 类中的 open 方法即可载入一个图像文件。如果载入文件失败,则会引起一个 IOError ;若无返回错误,则 open 函数返回一个 Image 对象。现在,我们可以通过一些对象属性来检查文件内容,即:

1 >>> import Image
2  >>> im = Image.open("j.jpg")
3  >>> print im.format, im.size, im.mode
4 JPEG (440, 330) RGB

  

这里有三个属性,我们逐一了解。

format : 识别图像的源格式,如果该文件不是从文件中读取的,则被置为 None 值。

size : 返回的一个元组,有两个元素,其值为象素意义上的宽和高。

mode : RGB(true color image),此外还有,L(luminance),CMTK(pre-press image)。

3.3 简单的几何变化

色彩空间变换。

convert() : 该函数可以用来将图像转换为不同色彩模式。

图像增强。

 Filters : 在 ImageFilter 模块中可以使用 filter 函数来使用模块中
一系列预定义的增强滤镜。
>>>out = im.resize((128, 128))                     

 >>>out = im.rotate(45)                             #逆时针旋转 45 度角。

 >>>out = im.transpose(Image.FLIP_LEFT_RIGHT)       #左右对换。

 >>>out = im.transpose(Image.FLIP_TOP_BOTTOM)       #上下对换。

 >>>out = im.transpose(Image.ROTATE_90)             #旋转 90 度角。

 >>>out = im.transpose(Image.ROTATE_180)            #旋转 180 度角。

>>>out = im.transpose(Image.ROTATE_270)            #旋转 270 度角。

  

原文地址:https://www.cnblogs.com/wj-1314/p/9428909.html

时间: 2024-10-17 04:45:22

深入学习使用ocr算法识别图片中文字的方法的相关文章

tesseract识别图片中文字

http://blog.sina.com.cn/s/blog_905f3dd60102xyih.html https://blog.csdn.net/qq_40147863/article/details/82289463 https://www.cnblogs.com/haoliansheng/p/9792272.html https://blog.csdn.net/m0_37215794/article/details/81944027 https://www.xfyun.cn/servic

OCR软件怎样识别图片文字?

很多人知道OCR软件是一种办公软件,关于它的一些具体操作是不太了解的,那么大家在工作中有没有需要用到它的地方呢?答案是可想而知的,小编在工作中就有一些识别图片文字的任务需要完成,接下来将OCR软件识别图片文字的操作分享给大家!步骤一:首先,我们的电脑里需要安装一款OCR软件,在电脑上安装好我们需要的工具之后,直接双击一下桌面上识别图片文字工具的图标就可以了.步骤二:在该工具的页面中,我们可以看到有多种功能供我们选择,如极速识别,OCR文字识别中批量识别.手写文字识别.图片局部识别等.步骤三:在O

如何通过迅捷OCR文字识别软件精准识别图片中的文字

怎样精准的将图片中的文字识别出来呢?相信这是很多人的烦恼,因为我们经常会遇到文字识别的时候,使用到的方法也有很多,但是很多方法识别出来的效果不是很好,需要对比着原图去改正,这就很令人烦恼了.下面小编将分享一种在图片文字识别软件中精准提取文字的方法,一起来学习下. 步骤一.文字识别的话需要使用到工具,可以打开电脑浏览器通过搜索迅捷OCR文字识别软件将其下载安装到电脑中去. 步骤二.将安装好的软件打开,关闭自动弹窗接着点击软件上上图片局部识别选项. 步骤三.进入图片局部识别选项后,点击添加文件按钮将

技术解析: 手机车牌识别软件—移动端车牌识别/OCR算法

一直以来有朋友就<手机车牌识别软件-OCR算法>与我进行讨论,由于个人原因,一直没有予以应答.今天借这个机会,就和大家一起分享一下所谓的:手机车牌识别软件. 第一种应用场景: 车牌识别的应用场景随处可见:高速公路上超速抓拍.小区门口关卡.车库入口关卡,甚至出现在车载设备上.它的工作原理大致这样:使用摄像头充当"眼睛",使用openCV与深度学习充当"大脑".实时车牌识别工作步骤:摄像头抓拍->openCV初步定位车牌位置->二次确认车牌位置的

如何识别图片中的文字

相信很多朋友和我一样都有这样的困扰,经常要将图片或者扫描文件中的文字提取出来,保存在我们的文档中去.但是用了很多软件,效果都不是很理想,还是需要自己人工去核对,大大影响了我们的工作效率,有没有一种简单.高效.识别率百分百的方法呢?下面我就来教大家一个方法保证简单.快速.高效! 工具/原料 WPS办公软件 AJViewer文字识别软件 准备工作 1 下载软件 ① 在“百度搜索”中输入这2款软件的软件名进行下载. ② 在“百度网盘”下载,地址是:http://pan.baidu.com/share/

PC端车牌识别朱凯茵从事图像识别算法、OCR算法

大家好,我是从事图像识别的pc端车牌识别朱凯茵,多多交流OCR算法,不限于车牌识别等,技术需要突破,你我成就梦想. 原文地址:https://www.cnblogs.com/g13512721355/p/10365874.html

如何操作OCR文字识别软件,这个方法可以帮到你

众所周知,OCR文字识别软件是OCR技术的衍生物,是一种识别图片文字,语音转换文字等功能的工具.而OCR文字识别软件的具体操作也是十分简单的,有兴趣的小伙伴们可以看看以下小编给大家分享的内容. 具体操作: 第一步:首先,我们应确定,我们准备要做的是什么,是图片转文字的操作,还是语音转文字的操作.确定好我们的具体操作就可以在OCR文字识别软件的功能中进行选择了. 第二步:明确好我们要做的东西,比如说我们今天要做的是图片转文字的操作,就可以在OCR文字识别软件工具中选择高级识别功能. 第三步:进入到

如何识别图片中的表格数据

??在很多时候,我们的数据来源形式是多种多样的,有时候数据(或表格)也会呈现在图片中.那么,我们如何来获取图片中的有用数据呢?当一张图片中含有表格数据的时候,我们可以用OpenCV识别表格中的直线,然后再用OCR技术识别其中的文字. ??本文仅作为如何识别图片中的表格的一个例子,希望能给读者一些启示.笔者用到的工具如下: opencv pyteressact numpy 我们用opencv来识别表格中的直线,用pyteressact来识别单元格文字,用numpy做数值处理.我们要识别的示例图片(

Python中利用Tesseract软件来识别图片中的英文与中文

OCR与Tesseract介绍   将图片翻译成文字一般被称为光学文字识别(Optical Character Recognition,OCR).可以实现OCR 的底层库并不多,目前很多库都是使用共同的几个底层OCR 库,或者是在上面进行定制. Tesseract 是一个OCR 库,目前由Google 赞助(Google 也是一家以OCR 和机器学习技术闻名于世的公司).Tesseract 是目前公认最优秀.最精确的开源OCR 系统. 除了极高的精确度,Tesseract 也具有很高的灵活性.它