Tesseract:安裝與命令行使用

Tesseract 是一款被廣泛使用的開源 OCR 工具,本文將對其進行簡單的介紹.

簡介

tesseract.gif

Tesseract(/'tesərækt/) 這個詞的意思是"超立方體",指的是幾何學裏的四維標準方體,又稱"正八胞體"。右圖是一個正八胞體繞着兩個四維空間中互相正交的平面進行雙旋轉時的透視投影。不過這裏要講的,是一款以其命名的開源 OCR(Optical Character Recognition, 光學字符識別) 軟件。

所謂 OCR 是圖像識別領域中的一個子領域,該領域專注於對圖片中的文字信息進行識別並轉換成能被常規文本編輯器編輯的文本。

Tesseract 已經有 30 年曆史,開始它是惠普實驗室的一款專利軟件,然後在 2005 年開源,自 2006 年後由 Google 贊助進行後續的開發和維護。

在 1995 年 Tesseract 曾是世界前三的 OCR 引擎,而且在現在的免費 OCR 引擎中,其識別精度也仍然是出類拔萃的。因爲其免費與較好的效果,許多的個人開發者以及一些較小的團隊在使用着 Tesseract ,諸如驗證碼識別、車牌號識別等應用中,不難見到 Tesseract 的身影。

獲取,安裝與配置

Linux

主流的 Linux 發行版都可以通過包管理器來安裝 Tesseract,以 Debian 及其衍生版爲例:

sudo apt-get install tesseract-ocr

如果想用 Tesseract 對圖像進行識別,還需要對應的語言文件。所謂的語言文件是 Tesseract 識別某種語言的文字圖像時需要的一些資源,這些東西也可以通過包管理器獲取。比如我們需要識別英語和簡體中文,那麼:

sudo apt-get install tesseract-ocr-eng tesseract-ocr-chi-sim

當然了,這是通過包管理器的方式進行安裝,如果需要,還可以通過編譯安裝的方式來構建最新版的 Tesseract.

Tesseract 的項目託管在 Google Code 上,在下載頁面可以自己選擇需要的版本,假如我們需要安裝 tesseract-ocr-3.02.02.tar.gz 這個版本:

wget https://tesseract-ocr.googlecode.com/files/tesseract-ocr-3.02.02.tar.gz
tar xzvf tesseract-ocr-3.02.02.tar.gz

Tesseract 的編譯需要 automake, autoconf, libtool 支持,所以這幾個工具得裝上:

sudo apt-get install autoconf automake libtool

當然了, Tesseract 還依賴一些圖像庫:

sudo apt-get install ligjpeg62-dev libtiff4-dev libpng12-dev libleptonica-dev

注意: 以上安裝的包的名稱可能在不同發行版上略有不同

需要注意的是,Leptonica 是 Tesseract 的一個比較重要的依賴,而且不同版本的 Tesseract 對 Leptonica 的版本要求也不一樣,需要留意包管理器所安裝的 Leptonica 版本是否滿足要求,如果不滿足要求,最好還是下載 Leptonica 的源代碼編譯安裝。

  • Tesseract 3.01: Leptonica 版本不低於 1.67
  • Tesseract 3.02: Leptonica 版本不低於 1.69
  • Tesseract 3.03: Leptonica 版本不低於 1.70

解決依賴後按常規方法編譯安裝即可:

./configure
make
sudo make install
sudo ldconfig

在 3.03 及以上版本中,用於訓練產生語言文件的工具需要單獨編譯和安裝:

make training
sudo make training-install

建議在執行 ./configure 時加上參數 –prefix=xxx 來指定安裝路徑,這樣以後要卸載會方便一些——當然如果這樣做的話在安裝完後需要做一些額外的工作,包括:

  • 添加 Tesseract 的可執行程序路徑到環境變量 PATH 中
  • 在 /usr/include 目錄或者 /usr/local/include 目錄下建立 Tesseract 安裝目錄下 include/tesseract 的符號鏈接
  • 在 /usr/lib 目錄或者 /usr/local/lib 目錄下建立 Tesseract 安裝目錄下的 lib 目錄下的靜態鏈接庫、動態鏈接庫的符號鏈接

安裝完成後,無論是通過包管理器安裝的還是通過編譯源代碼安裝的,建立都配置一下 TESSDATA_PREFIX 這個環境變量。在這個環境變量未設置的情況下,Tesseract 將會在安裝目錄中的 share/tessdata 這個目錄下去尋找、加載語言文件,這本身當然沒什麼問題。

問題在於當我們想添加新的語言文件時,會遇到一些麻煩——程序一般都是安裝的系統目錄中,也就是說,我們需要提升權限才能將語言文件放到正確的地方。假如是在公司的服務器上進行相關的操作,普通用戶一般都是沒有 sudo 權限的。將語言文件放置在用戶目錄中可以解決這個問題,方法是在 .bashrc (假設您使用 bash 作爲日常的 shell)中設置

export TESSDATA_PREFIX=$HOME/

如上設置時,將語言文件放在 ~/tessdata/ 下面即可。

Windows

Windows 上的安裝也很簡單,下載對應的安裝程序,雙擊運行,按照提示進行即可。

tesseract-install.png

注意在 "Language data" 那個選項裏,默認是隻勾選了英文的,如果需要進行其他語言的識別,記得勾選對應的語言。

再一個是,如果需要進行相應的開發工作,建立把 "Tesseract development files" 這個選項也勾選。

安裝完成後如無異常,會將安裝目錄添加到環境變量 PATH 中,這樣就可以在 cmd 中直接運行程序了——Tesseract 並沒有提供圖形界面的工具,只能在命令行中使用,當然了,我們可以自己編寫 GUI 應用程序來調用它,這個準備後面再講。

命令行使用

這裏只簡單講一下 Tesseract 識別圖像的基本用法,關於訓練和開發將另開新篇來專門講述。

由於 Tesseract 只提供命令行工具,這裏講到的用法對 Linux 和 Windows 平臺都適用。

首先可以通過 "–list-langs" 來查看有哪些可用的 "語言" ,如果之前的 TESSDATA_PREFIX 環境變量沒有設置錯,將會看到這樣的輸出:

bash > tesseract --list-langs
List of available languages (17):
math
chi
chi_sim
eng

這裏的 "eng" 和 "chi_sim" 是 Tesseract 提供的英文和簡體中文的語言文件,而其他的幾個則是我自己訓練得到的。

另外要說明的是,這裏的 "語言文件" 的本質是包含了某種 "自然語言" 的文字的特徵等輔助識別的一些資源,但像 chi_sim 這個中文簡體裏也包含了英文字母與阿拉伯數字的資源。而我們也可以爲了特定的用途而去訓練產生對應的資源,這裏的 "math" 是用於識別簡單數學表達式的一個資源,並不是說有一種叫做 "math" 的語言。

如果發現以上命令的輸出爲空,那應該去檢查一下 TESSDATA_PREFIX 這個環境變量。在這個環境變量無誤且 "語言文件" 存在的情況下,假設我們有一張名爲 paper.png 的圖片,則通過以下命令對圖片進行識別,

tesseract paper.png paper -l chi_sim
  • 第一個參數是待識別的圖像的文件名
  • 第二個參數用於指定輸出,如果希望直接輸出而不是保存到文件,那麼就使用 stdout,否則這個參數將會作爲保存結果的文件的前綴
  • -l chi_sim 這個應該很好理解,就是用來指定使用哪個 "語言文件",如果是使用 英文(eng) ,這個參數可以不加,因爲默認就是使用英文的 "語言文件" 來進行識別

以上命令如不出錯,結果將會保存到 paper.txt 這個文本文件中。

此外 Tesseract 還提供非常豐富的可選參數來對識別過程進行調整,可用的參數及其默認值可以通過以下命令進行查看:

tesseract --print-parameters

參數的使用有兩種:

  • 使用 -c 選項來設定單項參數的值,比如:

    tesseract paper.png paper -l chi_sim -c language_model_ngram_on=1
    

    允許使用多個 -c 選項來設置多個參數的值。

  • 將多項參數設置寫入文件,然後在識別時使用該文件,比如:

    tesseract paper.png paper -l chi_sim tess.conf
    

    需要注意的是,如果使用配置文件,用作參數的配置文件名要放在最後面——這裏也支持多個配置文件,但它們必須要在最後面。假如我有兩個配置文件 tess_1.conf 和 tess_2.conf,那麼這樣是正確的:

    tesseract paper.png paper -l chi_sim tess_1.conf tess_2.conf
    

    而這樣則是錯誤的:

    tesseract paper.png paper tess_1.conf -l chi_sim tess_2.conf
    

至於 Tesseract 那些參數各有什麼含義,官方沒有提供任何文檔來進行解釋,這裏有一個鏈接提供了部分參數的用處說明,應該是閱讀了 Tesseract 源代碼後得到的結論。


其他源代碼安裝參考資料

http://blog.csdn.net/yimingsilence/article/details/51276138

注意:下面的下載網址和版本有更新的以最新的爲準



1. 在ubuntu下可以自動安裝  

[html] view plain copy
 
 在CODE上查看代碼片派生到我的代碼片
  1. sudo apt-get install tesseract-ocr  

2.編譯安裝

    a.編譯環境: gcc gcc-c++ make(這個環境一般機器都具備,可以忽略)   

[html] view plain copy
 
 在CODE上查看代碼片派生到我的代碼片
  1. yum install gcc gcc-c++ make  


    b.安裝tesseract-ocr編譯必須的包

[html] view plain copy
 
 在CODE上查看代碼片派生到我的代碼片
  1. yum/apt-get install autoconf automake libtool  


    c.增加圖像解析需要的包,可以按照指定的格式選擇包

[html] view plain copy
 
 在CODE上查看代碼片派生到我的代碼片
  1. yum install libjpeg-devel libpng-devel libtiff-devel zlib-devel  

    ubuntu

[html] view plain copy
 
 在CODE上查看代碼片派生到我的代碼片
  1. sudo apt-get install libpng12-dev  
  2. sudo apt-get install libjpeg62-dev  
  3. sudo apt-get install libtiff4-dev  

    d.下載 leptonica 包: http://www.leptonica.org/source/leptonica-1.71.tar.gz
[html] view plain copy
 
 在CODE上查看代碼片派生到我的代碼片
  1. wget http://www.leptonica.org/source/leptonica-1.71.tar.gz  
  2. tar -zxvf ...  
  3. ./configure  
  4. make  
  5. make install  


需要注意,leptonica的版本問題

3.01 requires at least v1.67 of Leptonica.
3.02 requires at least v1.69 of Leptonica. (Both available in Ubuntu 12.04 Precise Pangolin.)
3.03 requires at least v1.70 of Leptonica. (Both available in Ubuntu 14.04 Trusty Tahr.)

如果版本不一致,會出現問題如下:

[html] view plain copy
 
 在CODE上查看代碼片派生到我的代碼片
  1. Tesseract Open Source OCR Engine v3.02.02 with Leptonica  
  2. Error in findTiffCompression: function not present  
  3. Error in pixReadStreamTiff: function not present  
  4. Error in pixReadStream: tiff: no pix returned  
  5. Error in pixRead: pix not read  
  6. Unsupported image type.  


    e.下載 tesseract-3.02 安裝包: http://tesseract-ocr.googlecode.com/files/tesseract-3.02.02.tar.gz

[html] view plain copy
 
 在CODE上查看代碼片派生到我的代碼片
  1. wget http://tesseract-ocr.googlecode.com/files/tesseract-ocr-3.02.02.tar.gz  
  2. ./autogen.sh  
  3. ./configure  
  4. make  
  5. make install  
  6. ldconfig  

    f.下載 tesseract-3.02 英文語言包: http://tesseract-ocr.googlecode.com/files/tesseract-ocr-3.02.eng.tar.gz,解壓後將 tesseract-ocr/tessdata 下的所有文件全部拷貝到 /usr/local/share/tessdata 下。



     測試

[html] view plain copy
 
 在CODE上查看代碼片派生到我的代碼片
  1. tesseract phototest.tif phototest -l eng  
這時應該在當前目錄生成一個 phototest.txt 文本文件,內容就是 phototest.tif 顯示的文字.


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章