Tesseract-OCR5.0軟件安裝和語言包安裝(Windows系統)


原文鏈接:http://www.juzicode.com/image-tesseract-ocr5-install-on-windows


Tesseract是一款優秀的開源OCR軟件,目前由Google維護改進,已發展到5.0版本,從4.0版本起增加了基於LSTM神經網絡的識別引擎。今天聊聊怎么安裝Tesseract命令行軟件和語言包,正確配置Tesseract是制作自定義字體和使用其Python接口pytesseract的基礎。

1、下載軟件安裝包

首先下載安裝包,進入tesseract的github文檔頁(https://tesseract-ocr.github.io/tessdoc),找到5.0.0.x目錄下的Binaries目錄

Binaries目錄下包含多種操作系統的二進制安裝包,以windows系統為例,進入“Windows – Tesseract at UB Mannheim”(https://github.com/UB-Mannheim/tesseract/wiki)下載安裝包,這是一個第三方制作的安裝包,當前(2021.11)最新版本為5.0.0:

你也可以進入第三方的官網Index of /tesseract找到各種歷史版本下載。

2、下載語言包

下一步下載語言包,進入tesseract的github文檔頁(https://tesseract-ocr.github.io/tessdoc),找到5.0.0.x目錄下的Traineddata Files目錄

該目錄下有tessdata,tessdata_best,tessdata_fast等5種語言包,其中tessdata是檢測速度和准確度居中的語言包,后綴best對應最慢和最准確的語言包,后綴fast對應最快和准確度較差的語言包,這里我們選擇tessdata。進入到tessdata語言包的github倉后,可以用git命令拉到本地,或者網頁版下載到本地后解壓,就可以看到很多以語言簡稱為文件名、traineddata為后綴的文件,其中eng.traineddata和chi_sim.traineddata一般足夠應對中文和英文場景:

 

3、安裝軟件

雙擊下載的安裝包(tesseract-ocr-w64-setup-v5.0.0-rc1.20211030.exe),一路Next:

直到提示安裝完成。

接下來需要手動配置系統環境變量,在windows系統環境變量PATH中添加剛才的安裝路徑,比如桔子菌的安裝路徑為D:\dev\Tesseract-OCR5.0.0:

接下來重新打開一個新的命令行,輸入”tesseract.exe -v”驗證軟件的安裝是否正確:

E:\juzicode>tesseract.exe -v
tesseract v5.0.0-rc1.20211030
 leptonica-1.78.0
  libgif 5.1.4 : libjpeg 8d (libjpeg-turbo 1.5.3) : libpng 1.6.34 : libtiff 4.0.9 : zlib 1.2.11 : libwebp 0.6.1 : libopenjp2 2.3.0

在打印信息中可以看到對應的版本號v5.0.0-rc1.20211030以及各種依賴庫文件的版本號,表示安裝成功。

4、安裝語言包

接下來安裝語言包,在上一個步驟下載的語言包中找到需要的traineddata文件,比如表示英文和中文簡體的eng.traineddata和chi_sim.traineddata,復制到軟件安裝目錄的tessdata路徑下,這里桔子菌的語言包目錄是:D:\dev\Tesseract-OCR5.0.0\tessdata。

再次進入到系統環境變量,添加一個名稱為“TESSDATA_PREFIX”的系統變量,輸入語言包所在的路徑:

設置完成后打開一個新的命令行輸入“tesseract.exe –list-langs”可以檢查語言包是否完成安裝:

E:\juzicode\tess>tesseract.exe --list-langs
List of available languages (3):
chi_sim
eng
osd

桔子菌前面拷貝了eng.traineddata和chi_sim.traineddata 2個文件到tessdata目錄下,輸入“tesseract.exe –list-langs”執行后看到了chi_chm和eng 2種語言,說明對應的語言類型安裝成功。

5、測試、識別

接下來就是使用tesseract識別文字驗證安裝情況。

通過“tesseract –help”可以打印出大部分的命令,其中識別圖片的命令如下形式:

tesseract.exe imagename|imagelist|stdin outputbase|stdout [options…] [configfile…]

這里第1個參數是imagename|imagelist|stdin,可以是單個圖片文件名稱、多個圖片文件組成的清單或者標准輸入stdin,第2個參數是outputbase|stdout,可以是輸出文件名稱或者標准輸出stdout,options選項可以配置語言種類、設置識別引擎、分頁模式等,configfile一般用的比較少。

我們先來看一個簡單的例子,要解析的文件名稱為test.png,要識別的圖片如下圖:

下面這個例子解析單個文件test.png(第1個參數),在標准輸出(命令行界面)打印解析結果(第2個參數為stdout),用-l參數帶chi_sim表示使用簡體中文語言:

E:\juzicode\tess>tesseract.exe test.png  stdout  -l chi_sim
juzicode.com
微 信 公 眾 號 : 桔 子 code
這 是 一 個 測 試 例 子

也可以將stdout改為其他的字符串(第2個參數改為輸出文件名稱,不用帶txt后綴),這樣會將識別的結果寫入到以該字符串命名的txt文件中:

E:\juzicode\tess>tesseract.exe test.png  result  -l chi_sim

在當前目錄下就會生成一個result.txt的文件,文件內容就是識別出來的文字內容。

可以將多個文件名單獨成行寫入到一個txt文件中構成一個imagelist,第1個參數就可以輸入該文件名稱,從而實現一次識別多個文件。需要注意的是圖片文件名稱需要單獨成行,否則會認為一行中多個文件名稱組成的字符串是一個文件,從而導致出現找不到文件的錯誤:Error in fopenReadStream: file not found。下面這個例子中todo.txt中保存了同目錄下的2個圖片文件名稱:test.png,test2.png,將原來的第1個參數改為“todo.txt”執行解析命令:

E:\juzicode\tess>tesseract.exe todo.txt  stdout  -l chi_sim
Page 0 : test.png
juzicode.com
微 信 公 眾 號 : 桔 子 code
這 是 一 個 測 試 例 子

Page 1 : test2.png
這 是 第 2 個 測 試 例 子

輸出內容包含了圖片文件名稱和對應的識別結果。

下面的例子是從pdf文件中截取的一個片段,文件名為bookseg.png:

E:\juzicode\tess>tesseract bookseg.png stdout -l chi_sim
引 言

數 字 圖 像 處 理 方 法 的 重 要 性 源 於 兩 個 主 要 應 用 領 域 : 改 善 圖 示 信 息 以 便 人 們 解 釋 ; 為 存 儲 、 傳
輸 和 表 示 而 對 圖 像 數 據 進 行 處 理 , 以 便 於 機 器 自 動 理 解 。 本 章 有 幾 個 主 要 目 的 : (1) 定 義 我 們 稱 之 為
圖 像 處 理 領 域 的 范 圍 ; (2) 從 歷 史 觀 點 回 顧 圖 像 處 理 的 起 源 ; (3) 通 過 考 察 一 些 主 要 的 應 用 領 域 , 給 出

圖 像 處 理 技 術 狀 況 的 概 念 ; (4) 筒 要 討 論 數 字 圖 像 處 理 中 所 用 的 主 要 方 法 ; (5) 概 述 通 用 目 的 的 典 型 圖
像 處 理 系 統 的 組 成 ; (6) 列 出 公 開 發 表 的 數 字 圖 像 處 理 領 域 的 一 些 圖 書 和 文 獻 。

從識別的結果看,對於這種清晰度較高的圖片識別效果還是非常完美的。

小結:注意tesseract的安裝包含2個部分,一個是軟件本身的安裝,安裝完成后需要配置PATH系統變量,一個是語言包的安裝,語言包拷貝完成后需要配置TESSDATA_PREFIX系統變量。

 

notes:

1.安裝軟件后如果沒有配置PATH路徑會提示:’tesseract’ 不是內部或外部命令,也不是可運行的程序或批處理文件。

2.如果語言包沒有安裝,或者沒有正確設置TESSDATA_PREFIX,將會提示Failed loading language錯誤:
Error opening data file d:\dev\Tesseract-OCR5.0.0\tessdata\eng.traineddata
Please make sure the TESSDATA_PREFIX environment variable is set to your “tessdata” directory.
Failed loading language ‘eng’
Tesseract couldn’t load any languages!
Could not initialize tesseract.

 

推薦閱讀:

有了這個方法群聊斗圖你就不會輸了

只需幾行代碼生成22種風格各異的彩色圖

你別耍我,0.1+0.2居然不等於0.3?

如何實現一個“萬能”的調試打印函數

有了這款神器,什么吃灰文件都統統現形

一行代碼深度定制你的專屬二維碼(amzqr)

桔子菌和超市老板田大爺的一次角色互換經歷

改造getpass,強迫症患者再也不用擔心少輸字符了

來看看怎么用OpenCV解構Twitter大牛的視覺錯覺圖

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM