PHP OCR实战:用Tesseract从图像中读取文字
副标题[/!--empirenews.page--]
Optical Character Recognition (OCR)即光学字符辨识是把打印文本转换成一个数字表示的过程。它有各种各样的实际应用–从数字化印刷书籍、创建收据的电子记录,到车牌识别甚至破解基于图像的验证码。 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中的以下代码:
修改成:
同样要在hosts文件中添加
安装Tesseract 下一步是安装Tesseract 因为Homestead Improved 使用debian,我们可以在使用vagrant ssh登陆虚拟机后使用apt-get 来安装它,简单运行如下命令:
正如上文提到的,在the README中有其他的操作系统对应教程。 测试并定制安装 我们将使用PHP包装,但是之前我们可以在命令行测试Tesseract。 首先保存这个图片sign.png 在虚拟机中,执行如下命令来从图片中读取文字
这将在当前文件夹创建一个文件:out.txt里面应该有单词:CAUTION 现在尝试sign2.jpg
这次产生单词Einbahnstral’ie。很接近但不正确—虽然图像中的文字相当清晰,它没能识别字符ß。 为了获使Tesseract正常读取字符串,我们需要安装一些新的语言文件—就本例来说,德语。 这里有一个全面的可用语言文件列表,但我们直接下载所需的文件:
解压:
然后把文件复制到如下目录:
例如
现在我们再次执行原来的命令但是要用 –l
这次,文字应该是Einbahnstraße(正确的)。 可以通过重复上述过程来使用任意语言。 配置应用程序 我们将使用这个库来用PHP使用Tesseract。 我们将建立一个极简的web应用:用户上传图片,并查看OCR处理结果。我们将使用Silex microframework 来实现。不要担心你不熟悉它,这个应用本身很简单。 记住这篇教程的所有代码都能在Github上获得。 (编辑:淮北站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |