在Python中使用Tesseract进行OCRubicon识别

本文由码农网 –
邱康原创翻译,转载请看清文末的转载要求,欢迎参与我们的付费投稿计划!

简介

Laravel 致力于让你在 PHP
开发过程中更加轻松愉快,这其中也包括本地开发环境的搭建。
Vagrant
提供了一种简单、优雅的方式来管理和配置虚拟机。

Laravel Homestead 是一个官方预封装的 Vagrant
box,它为你提供了一个完美的开发环境,你无需在本地安装 PHP ,web
服务器,或其他服务软件。 Vagrant box
是完全一次性的,你不用担心系统被搞乱!如果有什么地方出错了,你可以在几分钟内销毁并重建
box !

Homestead 可以运行在 Windows 、Mac 或 Linux 系统上,它里面包含了 Nginx
Web 服务器、PHP 7.1 、MySQL 、Postgres 、Redis 、Memcached 、Node
,以及一些有利于你开发 laravel 应用的其他程序。

如果你使用的是 Windows
系统,你可能需要启用硬件虚拟化(VT-x)。这通常需要通过 BIOS
来启用它。如果你在一个 UEFI 系统上使用 Hyper-V,您可能还需要禁用 Hyper-V
才能启用 VT-x。

本教程翻译自PyImageSearch英文原文

通过 Vagrant 搭建虚拟机环境

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

内置软件

  • Ubuntu 16.04
  • Git
  • PHP 7.1
  • Nginx
  • MySQL
  • MariaDB
  • Sqlite3
  • Postgres
  • Composer
  • Node (With Yarn, Bower, Grunt, and Gulp)
  • Redis
  • Memcached
  • Beanstalkd
  • Mailhog
  • ngrok

图片 1Tesseract
OCR

介绍

Laravel 致力于让 PHP 开发体验更愉快,也包含你的本地开发环境。Vagrant
提供了一个简单、优雅的方式来管理与供应虚拟机。

Laravel Homestead 是一个官方预载的
Vagrant「封装包」,提供你一个美好的开发环境,你不需要在你的本机端安装
PHP、HHVM、网页服务器或任何服务器软件。不用担心搞乱你的系统!Vagrant
封装包可以搞定一切。如果有什么地方出现故障,你可以在几分钟内快速的销毁并重建虚拟机。

Homestead 可以在任何 Windows、Mac 或 Linux 上面运行,里面包含了 Nginx
网页服务器、PHP 5.6、MySQL、Postgres、Redis、Memcached
还有所有你要开发精彩的 Laravel 应用程序所需的软件。

附注: 如果您是 Windows 的用户,您可能需要启用硬件虚拟化(VT-x)。通常需要通过 BIOS 来启用它。

Homestead 目前是构建且测试于 Vagrant 1.7 版本。

图片 2

安装与设置

上周的博客内容,我们学习了如何安装Tesseract去做OCR识别。

内置软件

  • Ubuntu 14.04
  • PHP 5.6
  • HHVM
  • Nginx
  • MySQL
  • Postgres
  • Node (With Bower, Grunt, and Gulp)
  • Redis
  • Memcached
  • Beanstalkd
  • Laravel Envoy
  • Blackfire Profiler

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

第一步

在你使用 Homestead 环境之前,你必须先安装 VirtualBox
5.1
、VMWare
或者
Parallels
中的一个,然后再安装
Vagrant。上述软件均提供了针对不同操作系统的可视化安装包。

若要使用 VMware provider,你需要同时购买 VMware Fusion / Workstation
以及 VMware Vagrant
插件
的软件授权,因为它们不是免费的。使用 VMware
的优势是:可以获得开箱即用的共享文件夹特性。

若要使用 Parallels provider,你需要安装 Parallels Vagrant
插件
,这是免费的。

然后我们通过一些小图片示例去应用Tesseract测试和评估这个OCR引擎的性能。

安装与配置

安装

安装 Homestead Vagrant Box

当 VirtualBox / VMware 以及 Vagrant 安装完成后,你可以使用以下命令将
laravel/homestead 这个 box 添加进你的 Vagrant 当中。 homestead box
的下载会花费你一点时间,具体的下载时长由网络速度决定:

vagrant box add laravel/homestead

如果上面的命令运行失败,请先确保你已经安装了最新版本的 Vagrant。

  • 如果使用国内网络,可以复制终端上显示的 homestead box
    下载地址手动下载并重命名。例如重命名为 virtualbox-3.0.0.box。

然后,新建一个 metadata.json 文件,并写入以下示例内容:

{
    "name": "laravel/homestead",
    "versions": 
    [
        {
            "version": "3.0.0",
            "providers": [
                {
                  "name": "virtualbox",
                  "url": "virtualbox-3.0.0.box"
                }
            ]
        }
    ]
}

最后,使用以下命令手动添加 box

vagrant box add metadata.json # 添加 box
vagrant box list # 列出所有 box

我们的结论显示,Tesseract在前景文本和背景色区分的非常清晰的图片上工作非常好。实际上,保证这些类型的分割可能极具挑战性。因此,我们倾向于训练特定领域的图像分类器和检测器。

安装 VirtualBox / VMWare 与 Vagrant

在启动你的 Homestead 环境之前,你必须先安装 VirtualBox 和 Vagrant.
两套软件在各平台都有提供易用的可视化安装程序。

准备

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

安装 Homestead

你可以简单使用 Git 克隆代码仓库的方式来安装
Homestead。建议将克隆的代码仓库重命名为 Homestead
,并放置到你的「home」目录中,如此一来 Homestead box
就能作为主机,为你的所有 Laravel 项目提供服务:

cd ~

git clone https://github.com/laravel/homestead.git Homestead

由于 Homestead 的 master
分支并不是稳定分支,你应该检出已经标签过的稳定版本。你可以在 Github
Release
Page
找到最新的稳定版本。

cd Homestead

// 检出所需要的版本...
git checkout v5.4.0

一旦你克隆完 Homestead 的代码仓库,就可以在 Homestead 目录中运行 bash
init.sh 命令来创建 Homesstead.yaml 配置文件。 Homesstead.yaml
文件会被放置在你的 Homestead 目录中:

// Mac / Linux...
bash init.sh

// Windows...
init.bat

然而,在我们需要将OCR应用于我们自己的项目的情况下,我们了解如何通过Python编程语言访问Tesseract
OCR非常重要(前提是我们可以获得Tesseract所需的漂亮,干净的分段)。

VMware

除了 VirtualBox 之外, Homestead 也支持 VMware. 如果使用 VMware 作为
provider, 你需要购买 VMware Fusion / Desktop 以及 VMware Vagrant
plug-in. VMware 提供了更快、性能更好的共享文件夹。

配置Vagrant

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

 

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

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

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

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

修改成:

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

同样要在hosts文件中添加

192.168.10.10       homestead.app

配置 Homestead

涉及OCR的示例项目可能包括[构建移动文档扫描程序](

增加 Vagrant 封装包

当 VirtualBox / VMware 和 Vagrant 安装完成后,你可以在终端机以下列命令将
‘laravel/homestead’ 封装包安装进你的 Vagrant
安装程序中。下载封装包会花你一点时间,时间长短将依据你的网络速度决定:

vagrant box add laravel/homestead

如果这个命令失败了, 你可能安装的是一个老版本的 Vagrant
需要指定一个完整的 URL:

vagrant box add laravel/homestead https://atlas.hashicorp.com/laravel/boxes/homestead

安装Tesseract

下一步是安装Tesseract

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

sudo apt-get install tesseract-ocr

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

配置你的提供者

Homestead.yaml 中的 provider 参数设置取决于你用的是哪一个 Vagrant 提供者
virtualbox 、vmware_fusion 、vmware_workstation 或者
parallels。你可以根据自己的实际情况来设置提供者:

provider: virtualbox

在本章的其余部分,我们将学习如何安装Tesseract OCR +
Python“绑定”,然后编写一个简单的Python脚本来调用这些绑定。在本教程结束时,您将能够将图像中的文本转换为Python字符串数据类型。

安装 Homestead

你可以简单地通过手动复制资源库的方式来安装 Homestead。将资源库复制至你的
“home” 目录中的 Homestead 文件夹,如此一来 Homestead
封装包将能提供主机服务给你所有的 Laravel(及 PHP)应用:

git clone https://github.com/laravel/homestead.git Homestead

一旦你克隆完 Homestead 仓库,从 Homestead 目录中执行 bash init.sh
命令来创建 Homestead.yaml 配置文件:

bash init.sh

Homestead.yaml 文件,将会被放置在你的 ~/.homestead 目录中。

测试并定制安装

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

首先保存这个图片sign.png

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

tesseract sign.png out

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

现在尝试sign2.jpg

tesseract sign2.jpg out

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

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

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

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

解压:

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

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

/usr/share/tesseract-ocr/tessdata

例如

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

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

tesseract sign2.jpg out -l deu

“deu” 是德语的 ISO 639-3码.

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

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

配置共享文件夹

你可以在 Homestead.yaml 文件的 folders 属性里列出所有想与 Homestead
环境共享的文件夹。这些文件夹中的文件若有变更,它们将会在你的本机电脑与
Homestead 环境自动更新同步。你可以在这里设置多个共享文件夹:

folders:
    - map: ~/Code
      to: /home/vagrant/Code

若要启动
NFS
,只需要在共享文件夹的设置值中加入一个简单的参数:

folders:
    - map: ~/Code
      to: /home/vagrant/Code
      type: "nfs"
  • 如果使用 NFS ,建议你安装
    vagrant-bindfs
    插件。 这个插件会替你处理 box 中的文件或目录权限问题。

你也可以在配置中传递任何 Vagrant
共享文件夹
支持的参数,在 options 配置项下列出它们:

folders:
    - map: ~/Code
      to: /home/vagrant/Code
      type: "rsync"
      options:
          rsync__args: ["--verbose", "--archive", "--delete", "-zz"]
          rsync__exclude: ["node_modules"]

本博客分为三部分。

配置你的 Provider

Homestead.yaml 文件中的 provider 键表明需要使用的 Vagrant
prodiver:virtualboxvmware_fusion (Mac OS X)、或者
vmware_workstation (Windows),你可以根据自己的喜好设定 provider 。

provider: virtualbox

发表评论

电子邮件地址不会被公开。 必填项已用*标注