OCR是通過使用電子或機械設備將二維文本數據轉換為機器編碼文本的形式。二維文本數據可以從各種來源獲得,例如掃描的文檔(如PDF文件),帶有文本數據(如.png或.jpeg格式)的圖像,路標(如交通路標)或任何其他形式的文本數據的圖像。OCR有許多有趣的應用。
第一次遇到OCR還是在上學的時候,我們的答題卡檢測就是這個過程!當然由於設備的故障或者一些其他的bug,導致檢測結果可能有些許偏差。然而,隨著現代技術的發展,OCR技術被應用到了各種各樣的應用中,並且它們已經變得更加先進,精度已經大大提高。
在本文中,我們將介紹OCR的基礎知識。然後,我們將繼續安裝pytesseract模塊,用於執行OCR。安裝過程總是很煩人的, 因此本文將嘗試簡化安裝過程。然後了解pytesseract模塊中的各種功能。最後,我們將以一個代碼片段結尾,該代碼片段涵蓋將OCR與Google文本到語音模塊結合使用的功能。
註:最後的代碼將是一個結合使用文本語音轉換和字符識別的代碼。這是語言模型設計系列的第二部分。如果您對gTTS模塊沒有任何線索,可以查看《使用Python三步完成文本到語音的轉換》。
OCR究竟是如何工作的?
OCR流程如上圖所示。發送API請求以執行OCR操作。輸入圖像被讀取並相應地預處理。文本被格式化並從圖像中提取。利用訓練好的數據集計算發送到OCR引擎中的圖像。OCR分析圖像中的字符,完成後它將發送數據以進行下一步的預處理和格式化。我們將最終獲得所需的文本數據。
安裝:
下面是經過小編簡化的安裝步驟。第一步很簡單,只需使用pip命令安裝pytesseract模塊。在命令提示符中輸入以下命令:
現在已經成功安裝了pytesseract模塊,但是嘗試運行代碼時,會收到一條錯誤消息,指出系統中未安裝tesseract模塊。解決這個問題需要打開下面的連結。 可從UB Mannheim的Tesseract獲得Tesseract 的一系列安裝版本。
選擇所需的版本進行安裝。可以將pytesseract模塊添加到路徑中,也可以直接使用它。
了解pytesseract模塊:
Python-tesseract是Google Tesseract-OCR引擎的包裝。它也可以用作tesseract的獨立調用腳本,因為它可以讀取Pillow和Leptonica圖像庫支持的所有圖像類型,包括jpeg,png,gif,bmp,tiff等。
為了更直觀地理解這一點,讓我們看下面的簡單代碼:
import pytesseract
pytesseract.pytesseract.tesseract_cmd = r'C:/Program Files/Tesseract-OCR/tesseract.exe'
image = cv2.imread('1.png')
text = pytesseract.image_to_string(image)首先導入pytesseract模塊並指定路徑, 然後使用cv2模塊讀取圖像, 最後提取這些圖像並返回文本數據。 image_to_string返回在圖像上運行的Tesseract OCR的結果,以字符串形式顯示。 有關tesseract OCR及其功能(如image_to_string)的更多信息,可以查看下面的連結。
代碼:
本節將包含最終的代碼段,將文本語音轉換以及OCR結合在一起。我們將使用最近安裝的pytesseract模塊以及gTTS和PIL等模塊。PIL代表python圖像庫,該庫將用於加載圖像。opencv庫中的相關函數也可以用於讀取圖像。整個代碼由如下3部分組成。
1. 讀取圖像:
在這個代碼塊中,將導入所需的庫並指定Tesseract的路徑。然後繼續使用cv2模塊讀取圖像。當然也可以使用PIL庫來實現這一點。之後將使用OCR庫將圖像轉換為文本數據並列印所需的輸出。
import cv2import pytesseractfrom PIL import Image
pytesseract.pytesseract.tesseract_cmd = r'C:/Program Files/Tesseract-OCR/tesseract.exe'
image = cv2.imread('1.png')
text = pytesseract.image_to_string(image)
print(text)2. 格式化數據:
在這個代碼塊中,我們將得到的數據進行格式化的處理,將其變為一行。基本上是對已經獲得的文本數據進行預處理,然後將其傳遞到gTTS模塊進行語音翻譯。
voice_text = ""
for i in text.split(): voice_text += i + ' ' voice_text = voice_text[:-1]voice_text3. 轉換成語音:
最後將導入Google文本語音轉換模塊,並將文本數據轉換為聲音文件的形式。這對於在PDF和圖像中聽到文本數據的音頻非常有用。
from gtts import gTTSfrom playsound import playsound
tts = gTTS(voice_text)tts.save("test.mp3")playsound("test.mp3")如果您對gTTS模塊有疑問,可以通過《使用Python三步完成文本到語音的轉換》這篇文章回顧之前的知識哦~
結論:
本文已經介紹了OCR的一些概念,並直觀地了解了OCR處理流程是如何工作的。然後了解了pytesseract模塊的一些功能,最後編寫了一個結合gTTS和pytesseract模塊的代碼。
在本主題語言模型設計的下一部分中,我們將探討如何使用深度學習技術以及OCR和TTS(文本到語音)來開發一個很酷的項目。
強烈建議大家查閱以下參考資料,以便更好地掌握這些概念並更好地學習它們。如果你有任何疑問可以隨時聯繫小編哦~