紙質文檔轉可編輯電子版太複雜?請看這份安裝指南
大數據文摘作品,轉載要求見文末
作者 | Adrian Rosebrock
編譯 | keiko、萬如苑
這是一篇關於安裝和使用Tesseract文字識別軟體的系列文章。
所謂的光學字元識別是指把列印的手寫的或者印刷圖片中的的文本自動轉化成計算機編碼的文本由此我們就可以通過字元串變數控制和修改這些文本。
如果你想了解更多關於Tesseract庫和如何使用Tesseract來實現光學字元識別請看本文。
安裝OCR軟體Tesseract
起初惠普公司在上世紀八十年代就開發了Tesseract,並在2005年公開了源代碼。
隨後在2006年谷歌接受了這個項目並一直贊助這個項目至今。
Tesseract軟體可以用於很多自然語言從英語到旁遮普語甚至意地緒語。自從2015年的更新之後現在它支持超過100種書面語言並且已經被編碼成能輕鬆應用於其他語言的形式。
最開始Tesseract是一個C語言程序在1998年她被移植到了C++語言上。這個軟體是一個沒有圖形用戶界面的無頭軟體可以在通過命令行指令執行。雖然沒有圖形用戶界面。但是有一些其他的相關軟體可以為Tesseract提供圖形用戶界面。
想更多的了解Tesseract請訪問項目網站並閱讀在維基百科上的介紹。
在這篇博客中我們將會談到
● 如何在系統中安裝Tesseract 軟體
● 如何確認安裝的Tesseract可以正常工作
● 嘗試在一些輸入的示例圖象上使用Tesseract文字識別軟體
當你讀完這篇教程後你會知道怎麼運用Tesseract在你自己的圖片上。
第一步安裝Tesseract
為了使用Tesseract庫我們首先要在系統中安裝它。
對於蘋果電腦用戶我們會使用Homebrew來安裝
如果你使用的Ubuntu操作系統請用apt-get來安裝
對於Windows用戶請參考Tesseract的相關文檔因為PyImageSearch不支持也不推薦在Windows系統中進行圖像的處理和開發。
第二步確認Tesseract已經安裝
為了確認你已經成功的安裝了Tesseract請執行命令
你可以在屏幕上看到Tesseract的版本和一串與Tesseract適配的圖像文件格式庫。
意味著Tesseract並沒有被正確的安裝請回到第一步並檢查是否有錯誤。另外你可能需要更新你的路徑變數只針對於高級用戶。
第三步測試Tesseract光學字元識別軟體
為了讓Tesseract文字識別軟體能得到合理的結果你需要準備好被乾淨利落得預處理過的圖片。
當使用Tesseract時我建議
● 使用高解析度和DPI的圖片作為輸入圖片
● 使用圖像閾值分割技術把文本從背景中分離出來
● 確保上層的字元可以被清楚的從背景中分離出來例如沒有模糊或者變形
● 在輸入圖像上應用文本傾斜矯正技術來保證文本是正確的對齊的。
如果你沒有按照以上的建議預處理文件你可能會得到錯誤的圖像文本識別結果我們在本教程的後面也會提到。
現在讓我們應用文字識別技術
在你的終端上執行下列命令
正確Tesseract正確的識別了 「Testing Tesseract OCR」 並在終端上列印了出來。
在你的終端上輸入下面的指令記得改變輸入文件的名字。
成功Tesseract成功的識別了圖片中的文字「PyImageSearch」。
現在讓我們試試除了字母Tesseract能否識別數字
這個例子中使用命令行將數字僅僅轉換成了數字
成功Tesseract成功的識別了圖片中的文字「PyImageSearch」。
現在讓我們試試除了字母Tesseract能否識別數字
這個例子中使用命令行將數字僅僅轉換成了數字
Tesseract再一次的成功識別出了圖像中的字元在這個例子中是數字
在上述的三個例子中Tesseract都能夠正確的從圖像中識別出字元你甚至可能認為Tesseract是一個適用於所有文字識別的工具。
但是在接下來的篇幅中我們將介紹一些Tesseract的局限性。
Tesseract進行文字識別的局限性
幾周前我在進行一個識別信用卡上的16位數字的項目。
我很輕鬆的用python代碼將16位數字分成4個數字一組的四組
注意到Tesseract識別出的數字是5513 但是這張圖片中清晰地顯示著數字5678。
不幸的是這是一個能很好的展現Tesseract的局限性的例子。當我們把上層的文本從背景中分離出來的時候文本本身的模糊性讓Tesseract產生了混淆。也可能是Tesseract並沒有學習過讀取類似信用卡數字的數字。
Tesseract最適用於建立文件處理流程的時候圖片先被掃描再預處理然後應用文本識別技術。
我們應該注意到Tesseract並不是專門為文本識別設計的解決方案她不能在所有甚至大多數圖像處理和電腦圖像應用程序中正確識別文本。為了更好的實現圖像文本識別你需要使用一些特徵提取技術比如機器學習和深度學習。
一個應用更有特徵提取技術和機器學習來識別手寫文本的識別系統的例子可以在我的書Practical Python and OpenCV中找到。
小結
今天在上部中我們學習了如何在我們的計算機上安裝和設置Tesseract來實現圖像的字元識別然後我們使用Tesseract進行了輸入圖像的字元識別。
但是我們發現除非輸入圖像已經被乾淨的分割否則Tesseract就會得到錯誤的結果。在輸入圖片比較棘手的特殊情況下我們可以通過訓練一個自定義的機器學習模型來提高字元識別的正確性。
當高解析度圖像的上層字元可以從背景中被清除的分割的時候Tesseract最為適用。
原文鏈接http://www.pyimagesearch.com/2017/07/03/installing-tesseract-for-ocr/
推薦閱讀:
※星巴克鐵粉必備:你的收集欲,數據來買單!
※學習是一種狀態
※我用數據分析了一切,卻還是不知道你愛不愛我
※花式玩轉博物館,用數據和藝術品來對話!