大数据文摘作品,转载要求见文末
作者 | Adrian Rosebrock
编译 | keiko、万如苑
这是一篇关于安装和使用Tesseract文字识别软件的系列文章。
所谓的光学字符识别是指把打印的手写的或者印刷图片中的的文本自动转化成计算机编码的文本由此我们就可以通过字符串变量控制和修改这些文本。
如果你想了解更多关于Tesseract库和如何使用Tesseract来实现光学字符识别请看本文。
安装OCR软件Tesseract
起初惠普公司在上世纪八十年代就开发了Tesseract,并在2005年公开了源代码。
随后在2006年谷歌接受了这个项目并一直赞助这个项目至今。
Tesseract软件可以用于很多自然语言从英语到旁遮普语甚至意地绪语。自从2015年的更新之后现在它支持超过100种书面语言并且已经被编码成能轻松应用于其他语言的形式。
最开始Tesseract是一个C语言程序在1998年她被移植到了C++语言上。这个软件是一个没有图形用户界面的无头软件可以在通过命令行指令执行。虽然没有图形用户界面。但是有一些其他的相关软件可以为Tesseract提供图形用户界面。
想更多的了解Tesseract请访问项目网站并阅读在维基百科上的介绍。
在这篇博客中我们将会谈到
● 如何在系统中安装Tesseract 软件
● 如何确认安装的Tesseract可以正常工作
● 尝试在一些输入的示例图象上使用Tesseract文字识别软件
当你读完这篇教程后你会知道怎么运用Tesseract在你自己的图片上。
第一步安装Tesseract
为了使用Tesseract库我们首先要在系统中安装它。
对于苹果电脑用户我们会使用Homebrew来安装
如果你使用的Ubuntu操作系统请用apt-get来安装
对于Windows用户请参考Tesseract的相关文档因为PyImageSearch不支持也不推荐在Windows系统中进行图像的处理和开发。
第二步确认Tesseract已经安装
为了确认你已经成功的安装了Tesseract请执行下面的命令
你可以在屏幕上看到Tesseract的版本和一串与Tesseract适配的图像文件格式库。
如果你得到了以下的错误
意味着Tesseract并没有被正确的安装请回到第一步并检查是否有错误。另外你可能需要更新你的路径变量只针对于高级用户。
第三步测试Tesseract光学字符识别软件
为了让Tesseract文字识别软件能得到合理的结果你需要准备好被干净利落得预处理过的图片。
当使用Tesseract时我建议
● 使用高分辨率和DPI的图片作为输入图片
● 使用图像阈值分割技术把文本从背景中分离出来
● 确保上层的字符可以被清楚的从背景中分离出来例如没有模糊或者变形
● 在输入图像上应用文本倾斜矫正技术来保证文本是正确的对齐的。
如果你没有按照以上的建议预处理文件你可能会得到错误的图像文本识别结果我们在本教程的后面也会提到。
现在让我们在下面的图片上应用文字识别技术
在你的终端上执行下列命令
正确Tesseract正确的识别了 “Testing Tesseract OCR” 并在终端上打印了出来。
接下来让我们试试下面的图片
在你的终端上输入下面的指令记得改变输入文件的名字。
成功Tesseract成功的识别了图片中的文字“PyImageSearch”。
现在让我们试试除了字母Tesseract能否识别数字
这个例子中使用命令行将数字仅仅转换成了数字
成功Tesseract成功的识别了图片中的文字“PyImageSearch”。
现在让我们试试除了字母Tesseract能否识别数字
这个例子中使用命令行将数字仅仅转换成了数字
Tesseract再一次的成功识别出了图像中的字符在这个例子中是数字
在上述的三个例子中Tesseract都能够正确的从图像中识别出字符你甚至可能认为Tesseract是一个适用于所有文字识别的工具。
但是在接下来的篇幅中我们将介绍一些Tesseract的局限性。
Tesseract进行文字识别的局限性
几周前我在进行一个识别信用卡上的16位数字的项目。
我很轻松的用python代码将16位数字分成4个数字一组的四组
下面是一个一组4个数字的示例图片
但是当我在上面的图片中应用Tesseract时结果却不尽如人意。
注意到Tesseract识别出的数字是5513 但是这张图片中清晰地显示着数字5678。
不幸的是这是一个能很好的展现Tesseract的局限性的例子。当我们把上层的文本从背景中分离出来的时候文本本身的模糊性让Tesseract产生了混淆。也可能是Tesseract并没有学习过读取类似信用卡数字的数字。
Tesseract最适用于建立文件处理流程的时候图片先被扫描再预处理然后应用文本识别技术。
我们应该注意到Tesseract并不是专门为文本识别设计的解决方案她不能在所有甚至大多数图像处理和电脑图像应用程序中正确识别文本。为了更好的实现图像文本识别你需要使用一些特征提取技术比如机器学习和深度学习。
一个应用更有特征提取技术和机器学习来识别手写文本的识别系统的例子可以在我的书Practical Python and OpenCV中找到。
小结
今天在上部中我们学习了如何在我们的计算机上安装和设置Tesseract来实现图像的字符识别然后我们使用Tesseract进行了输入图像的字符识别。
但是我们发现除非输入图像已经被干净的分割否则Tesseract就会得到错误的结果。在输入图片比较棘手的特殊情况下我们可以通过训练一个自定义的机器学习模型来提高字符识别的正确性。
当高分辨率图像的上层字符可以从背景中被清除的分割的时候Tesseract最为适用。
原文链接http://www.pyimagesearch.com/2017/07/03/installing-tesseract-for-ocr/
关于转载 如需转载,请在开篇显著位置注明作者和出处(转自:大数据文摘 | bigdatadigest),并在文章结尾放置大数据文摘醒目二维码。无原创标识文章请按照转载要求编辑,可直接转载,转载后请将转载链接发送给我们;有原创标识文章,请发送【文章名称-待授权公众号名称及ID】给我们申请白名单授权。未经许可的转载以及改编者,我们将依法追究其法律责任。联系邮箱:zz@bigdatadigest.cn。