1. 程式人生 > 程式設計 >Python如何基於Tesseract實現識別文字功能

Python如何基於Tesseract實現識別文字功能

機器視覺

從Google的無人駕駛汽車到可以識別假鈔的自動售賣機,機器視覺一直都是一個應用廣泛且具有深遠的影響和雄偉的願景的領域。

這裡我們將重點介紹機器視覺的一個分支:文字識別。介紹如何用一些Python庫來識別和使用線上圖片中的文字。

我們可以很輕鬆的閱讀圖片裡的文字,但是機器閱讀這些圖片就會非常困難,利用這種人類使用者可以正常讀取但是大多數存貯器沒法讀取的圖片,這時驗證碼(CAPTCHA)就出現了。驗證碼讀取的難易程式也大不相同。

將影象翻譯成文字一般被稱為光學文字識別(Optical Character Recognition,OCR)。可以實現OCR的底層庫並不多,目前很多庫都是使用共同的幾個底層OCR庫,或者是在上面進行定製。

OCR庫概述

在讀取和處理影象、影象相差的機器學習以及建立影象等任務中,Python一直都是非常出色的語言。雖然有很多庫可以進行影象處理,但是這裡我們只介紹Tesseract庫。

Tesseract

Tesseract是一個OCR庫,目前由Google贊助。Tesseract是目前公認最優秀、最精確的開源OCR系統。除了極高的精確度,Tesseract也具有很高的靈活性。它可以通過訓練識別出任何字型,也可以識別出任何Unicode字元。

安裝Tesseract:Windows系統

下載可執行安裝檔案安裝即可。

安裝pytesseract

Tesseract是一個Python的命令列工具,不是通過import語句匯入的庫。安裝之後,要用tesseract命令在Python的外面執行,但我們可以通過pip安裝支援Python版本的Tesseract庫:

pip install pytesseract

處理規範的文字

你要處理的大多數文字都是比較乾淨、格式規範的。格式霍英東的文字通常具有以下特點:

使用統一的標準字型(不包含手寫體、草書或者十分“花哨”的字型),影印或者拍照但是字型清晰、沒有多餘的痕跡或者汙點。

排列整齊,沒有歪歪斜斜的字。

沒有超出圖片範圍,也沒有殘缺不全,或緊緊貼在圖片的邊緣。

文字的一些格式問題在圖片預處理時可以進行解決。例如,可以把圖片轉換成灰度圖,調整亮度和對比度,還可以根據需要進行裁剪和旋轉,在這裡不作介紹。

示例:

英文:

Python如何基於Tesseract實現識別文字功能

F:DE209_F>tesseract english.jpg text
Tesseract Open Source OCR Engine v4.00.00alpha with Leptonica
 
F:DE209_F>type text.txt
This is some text,written in Arial,that will be read by
Tesseract. Here are some symbols: !@#$%"&*()

識別結果的準確率還是挺高的。

通過Python程式碼實現

英文:

Python如何基於Tesseract實現識別文字功能

中文:

Python如何基於Tesseract實現識別文字功能

#!/usr/bin/python3
# -*- coding:utf-8 -*- 
import pytesseract
from PIL import Image
 
# 開啟影象:英文
image = Image.open('english.jpg')
 
# OCR識別:lang預設英文
text = pytesseract.image_to_string(image)
 
# 列印識別後的文字
print(text)
 
# 我是分割線
print("*" * 30)
 
# 開啟影象:英文
image = Image.open('china.png')
 
# OCR識別:lang指定中文
text = pytesseract.image_to_string(image,lang = 'chi_sim')
 
# 列印識別後的文字
print(text)

執行結果:

This is some text,that will be read by
Tesseract. Here are some symbols: !@#$%"&*()
******************************
中 華 人 民 共 和 國

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支援我們。