欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  后端开发

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

程序员文章站 2022-05-27 15:36:13
...

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

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

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

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. “deu” 是德语的 ISO 639-3码.

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

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

配置应用程序

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

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

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

第一步是用Composer来安装依赖文件:

  1. composer require silex/silex twig/twig thiagoalessio/tesseract_ocr:dev-master

然后建立三个文件夹:

  1. - public
  2. - uploads
  3. - views

我们需要上传表单(views\index.twig):

  1. OCR
  2. ""
    method="post" enctype="multipart/form-data">