利用Tesseract圖片文字識別初探
本文介紹了如何利用 Tesseract 這個常用的開源圖像識別引擎進行圖像識別工作。示例平台為 Mac,列出了常見的操作命令。
來源:https://tonydeng.github.io/
文 | TonyDeng
一直以來都想嘗試一下圖片的中文識別,直到最近才有點空閑時間,主要目的是證實一下到底可不可行,正確率能否達到 95% 以上。自己從頭寫起十分費時間,因為圖片處理很麻煩,所以我選用了 。
所謂 (Optical Character Recognition) 是指對文本資料進行掃描,然後對圖像文件進行分析處理,獲取文字和版面信息的過程。 是圖像識別領域中的一個子領域,該領域專註於對圖片中的文字信息進行識別並轉換成能被常規文本編輯器編輯的文本。
Tesseract 介紹
(/ tes?r?kt/) 這個詞的意思是"超立方體",指的是幾何學裡的四維標準方體,又稱"正八胞體",是一款被廣泛使用的開源 工具。
GIF/505K
已經有 30 年歷史,開始它是惠普實驗室於 1985 年開始研發的一款專利軟體,到 1995 年一件成為 OCR 業界內最準確的識別引擎之一。然而,HP 不久便決定放棄 OCR 業務, 從此塵封。數年之後,HP 意識到與其將 Tesseract 束之高閣,還不如貢獻給開源,讓其重煥新生。在 2005 年, 由美國內華達州信息技術研究所獲得,並求助於 對 進行改進、消除 Bug、優化工作,並開源,其後一直由 贊助進行後續的開發和維護。因為其免費與較好的效果,許多的個人開發者以及一些較小的團隊在使用著 ,諸如驗證碼識別、車牌號識別等應用中,不難見到 的身影。
現在 託管在 上,大家有興趣可以上 上 或 該項目]3。
安裝Mac OSX
在 上安裝 是一件非常簡單的事情,我們還是使用 來進行安裝。
不過,如果你只是用上述命令來安裝 Tesseract 的話,就會發現,只支持英文,因為它只默認安裝了 的語言包。如果我們需要識別其他的語言該如何來辦呢?
安裝指定的語言包:
使用 安裝所有語言包:
其他平台安裝
更多 Tesseract 的安裝可以查看這兒 Install Tesseract via pre-built binary package或 build it from source
命令行使用
這裡只見到講一下 Tesseract 識別圖像的基本用法,關於訓練和開發將來在另開新篇來專門講述。
由於 Tesseract 只提供命令行工具,這裡講的用法對於 Linux 和 Windows 平台都適用。
首先可以通過 來查看哪些可用的"語言",如果之前的 環境變數沒有設置錯誤,將看到這樣的輸出:
大家可以看到,我安裝了 107 個語言包,其中, 和 是 提供的英文和簡體中文的語言文件。
另外,要說明的是,這裡的 "語言文件" 的本質是包含了某種 "自然語言" 的文字的特徵等輔助識別的一些資源,但像 這個中文簡體里也包含了英文字母與阿拉伯數字的資源。而我們也可以為了特定的用途而去訓練產生對應的資源,並且可以給這個資源自定義一個名字。
如果發現以上命令的輸出為空,那應該去檢查一下 這個環境變數。在這個環境變數無誤且 "語言文件" 存在的情況下,假設我們有一張名為 的圖片,則通過以下命令對圖片進行識別,
第一個參數是待識別的圖像的文件名
第二個參數用於指定輸出,如果希望直接輸出而不是保存到文件,那麼就使用 ,否則這個參數將會作為保存結果的文件的前綴
-l 這個應該很好理解,就是用來指定使用哪個 "語言文件",如果是使用 英文( ) ,這個參數可以不加,因為默認就是使用英文的 "語言文件" 來進行識別
以上命令如不出錯,結果將會保存到 paper.txt 這個文本文件中。
此外 還提供非常豐富的可選參數來對識別過程進行調整,可用的參數及其默認值可以通過以下命令進行查看:
參數的使用有兩種:
使用 -c 選項來設定單項參數的值,比如:
tesseract paper.png paper -l chisim -c languagemodelngramon=1
允許使用多個 -c 選項來設置多個參數的值。
將多項參數設置寫入文件,然後在識別時使用該文件,比如:
tesseract paper.png paper -l chi_sim tess.conf
需要注意的是,如果使用配置文件,用作參數的配置文件名要放在最後面——這裡也支持多個配置文件,但它們必須要在最後面。假如我有兩個配置文件 tess1.conf 和 tess2.conf,那麼這樣是正確的:
而這樣則是錯誤的:
至於 那些參數各有什麼含義,官方沒有提供任何文檔來進行解釋,這裡有一個 鏈接提供了部分參數的用處說明,應該是閱讀了 源代碼後得到的結論。
另外
關於 的文檔,可以查看 Tetesseract 官方 Blog
題圖:pexels,CC0 授權。
點擊展開全文
※雲伺服器彈性、安全、穩定背後的技術秘密
※如何利用 Celery 執行定時任務並設置優先順序?
※Flask 進階:如何實現 HTTPS?
TAG:編程派 |
※使用Python和Tesseract來識別圖形驗證碼
※Python驗證碼識別:利用pytesser識別簡單圖形驗證碼
※谷歌開源Live Transcribe語音識別轉文字工具
※如何利用TensorFlow.js部署簡單的AI版「你畫我猜」圖像識別應用
※TensorFlow驗證碼識別
※OCR大突破:Facebook推出大規模圖像文字檢測識別系統——Rosetta
※基於TensorFlow和Keras的圖像識別(第一部分)
※基於TensorFlow和Keras的圖像識別(第二部分)
※Adrian小哥教程:如何使用Tesseract和OpenCV執行OCR和文本識別
※Westwood Bioscience視覺識別設計欣賞
※Machine Learning(一):基於 TensorFlow 實現寵物血統智能識別
※東芝選用Cadence Tensilica Vision P6 DSP 提高ADAS晶元的圖像識別性能
※開源OCR文字識別軟體Calamari
※Oculus CTO:在Oculus Quest探索手勢識別
※谷歌AI圖像識別功能Google Lens上線iOS平台 Android版也快了
※Google AI地標檢索識別競賽雙料獲勝方案 | 飛槳PaddlePaddle開源
※TensorFlow 實踐之手寫體數字識別!
※《Avengers: Infinity War》導演表示 Peter Dinklage 在電影中是可以識別的
※指紋識別與Logo合體 Moto E5 Plus渲染圖曝光
※商業欺詐檢測難識別?Arcade Analytics全覆蓋!