加入收藏 | 设为首页 | 会员中心 | 我要投稿 宁德站长网 (https://www.0593zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

PHP OCR实战:用Tesseract从图像中读取文字

发布时间:2016-10-02 11:53:49 所属栏目:PHP教程 来源:站长网
导读:副标题#e# OpticalCharacterRecognition(OCR)即光学字符辨识是把打印文本转换成一个数字表示的过程。它有各种各样的实际应用从数字化印刷书籍、创建收据的电子记录,到车牌识别甚至破解基于图像的验证码。 498)this.width=498;' onmousewheel = 'javascript
副标题[/!--empirenews.page--]

  

Optical Character Recognition (OCR)即光学字符辨识是把打印文本转换成一个数字表示的过程。它有各种各样的实际应用–从数字化印刷书籍、创建收据的电子记录,到车牌识别甚至破解基于图像的验证码。

PHP OCR实战:用Tesseract从图像中读取文字

Tesseract是一个能实现OCR的开源项目。你能在*Nix系统,Mac系统和Windows系统上运行这个项目,但是只要使用一个库,我们就能在PHP项目中使用它了。本教程的目的是教你如何使用。

安装

准备

为了让事情变得简单和一致的, 我们将使用虚拟机(本文使用Vagrant)来运行应用程序,这会涉及到安装PHP和Nginx,我们将安装 Tesseract来分别演示过程。如果你想自己基于现有Debian-based系统安装Tesseract,你可以跳过下一部分—或者查看the README来获得在其他*nix上,Mac系统或者Windows的安装指导.

配置Vagrant

为了配置Vagrant以跟上本教程,完成如下步骤。或者你也可以简单的从Github获得代码。

输入以下命令来下载Homestead Improved Vagrant配置到一个名为orc的文件夹:

git clone https://github.com/Swader/homestead_improved ocr

将Nginx配置文件Homestead.yml中的以下代码:

  1. sites: 
  2.     - map: homestead.app 
  3.       to: /home/vagrant/Code/Project/public 

修改成:

  1. sites: 
  2.     - map: homestead.app 
  3.       to: /home/vagrant/Code/public 

同样要在hosts文件中添加

  1. 192.168.10.10       homestead.app 

安装Tesseract

下一步是安装Tesseract

因为Homestead Improved 使用debian,我们可以在使用vagrant ssh登陆虚拟机后使用apt-get 来安装它,简单运行如下命令:

  1. sudo apt-get install tesseract-ocr 

正如上文提到的,在the README中有其他的操作系统对应教程。

测试并定制安装

我们将使用PHP包装,但是之前我们可以在命令行测试Tesseract。

首先保存这个图片sign.png

在虚拟机中,执行如下命令来从图片中读取文字

  1. tesseract sign.png out 

这将在当前文件夹创建一个文件:out.txt里面应该有单词:CAUTION

现在尝试sign2.jpg

  1. tesseract sign2.jpg out 

这次产生单词Einbahnstral’ie。很接近但不正确—虽然图像中的文字相当清晰,它没能识别字符ß。

为了获使Tesseract正常读取字符串,我们需要安装一些新的语言文件—就本例来说,德语。

这里有一个全面的可用语言文件列表,但我们直接下载所需的文件:

  1. wget https://tesseract-ocr.googlecode.com/files/tesseract-ocr-3.02.deu.tar.gz 

解压:

  1. tar zxvf tesseract-ocr-3.02.deu.tar.gz 

然后把文件复制到如下目录:

  1. /usr/share/tesseract-ocr/tessdata 

例如

  1. cp deu-frak.traineddata /usr/share/tesseract-ocr/tessdata 
  2. cp deu.traineddata /usr/share/tesseract-ocr/tessdata 

现在我们再次执行原来的命令但是要用 –l

  1. tesseract sign2.jpg out -l deu 
  2.  
  3.     “deu” 是德语的 ISO 639-3码. 

这次,文字应该是Einbahnstraße(正确的)。

可以通过重复上述过程来使用任意语言。

配置应用程序

我们将使用这个库来用PHP使用Tesseract。

我们将建立一个极简的web应用:用户上传图片,并查看OCR处理结果。我们将使用Silex microframework 来实现。不要担心你不熟悉它,这个应用本身很简单。

记住这篇教程的所有代码都能在Github上获得。

(编辑:宁德站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

热点阅读