使用python進(jìn)行圖片的文字識(shí)別詳細(xì)代碼
安裝 Tesseract OCR
- Tesseract OCR 是一款由 Google 團(tuán)隊(duì)開(kāi)發(fā)的開(kāi)源 OCR(Optical Character Recognition,光學(xué)字符識(shí)別)引擎,用于將圖片、PDF 等格式中的文本轉(zhuǎn)換為可編輯的文本格式。自 1985 年首次發(fā)布以來(lái),它已經(jīng)經(jīng)歷了多個(gè)版本和改進(jìn),并成為目前最受歡迎的 OCR 引擎之一。
- Tesseract OCR 支持多種語(yǔ)言,包括英語(yǔ)、中文、日語(yǔ)、俄語(yǔ)等等,而且具有較高的準(zhǔn)確率和穩(wěn)定性,尤其在處理大量文字的場(chǎng)景下表現(xiàn)突出。同時(shí),該引擎還支持多線程處理,可以有效地提高識(shí)別速度。
- 下載地址:Home · UB-Mannheim/tesseract Wiki (github.com)
- Windows安裝包: https://digi.bib.uni-mannheim.de/tesseract/tesseract-ocr-w64-setup-5.3.1.20230401.exe
注意: 這是Windows64位系統(tǒng)安裝包.
tesseract源碼的GitHub地址:tesseract-ocr/tesseract: Tesseract Open Source OCR Engine ,有能力的可以自行編譯源代碼
安裝過(guò)程
- 雙擊
tesseract-ocr-w64-setup-5.3.1.20230401.exe
安裝包進(jìn)行安裝
首先是選擇語(yǔ)言界面,默認(rèn)是英文, 沒(méi)有中文,有其他國(guó)家的語(yǔ)言可以選。
- 點(diǎn)
Next
- 點(diǎn)
I Agree
- 默認(rèn)為這臺(tái)電腦進(jìn)行安裝
- 因?yàn)樾枰?Tesseract OCR 中識(shí)別中文簡(jiǎn)體等非英語(yǔ)文本,所有需要安裝相應(yīng)的語(yǔ)言數(shù)據(jù)。
可以只安裝特定語(yǔ)言, 比如中文簡(jiǎn)體
- 選擇安裝路徑, 比如我選的是
D:\Tesseract-OCR
,待會(huì)配系統(tǒng)環(huán)境變量可能會(huì)用到這個(gè)安裝路徑。
- 創(chuàng)建快捷圖標(biāo)
- 安裝中
- Next
- Finish
- 可以在開(kāi)始菜單欄中看到
Console
- 點(diǎn)進(jìn)去就能直接進(jìn)入控制臺(tái)了
- 輸入:
tesseract --help
試試
因?yàn)槲覀儾皇侵苯邮褂妹钊ゲ僮鬟@個(gè)tesseract
, 而是使用python去操作它, 因此這個(gè)命令行就不用管他, 可以關(guān)掉。接下來(lái)為了讓python能直接使用它, 需要檢查系統(tǒng)的環(huán)境變量有沒(méi)有設(shè)置好。
在Windows操作系統(tǒng)中,環(huán)境變量用于存儲(chǔ)一些系統(tǒng)或用戶自定義的參數(shù)和路徑信息。這些參數(shù)和路徑信息可以幫助操作系統(tǒng)找到系統(tǒng)中安裝的軟件和程序,以便正確地運(yùn)行它們。
- 重新開(kāi)個(gè)命令窗口
輸入tesseract -v
查看版本號(hào),你可能會(huì)出現(xiàn)上面的情況, 就是沒(méi)有配置好系統(tǒng)的環(huán)境變量,那就需要配置環(huán)境變量
配置系統(tǒng)的環(huán)境變量
- 以windows10的電腦為例, 打開(kāi)電腦設(shè)置
- 點(diǎn)擊系統(tǒng), 找到關(guān)于,側(cè)邊有個(gè)
高級(jí)系統(tǒng)設(shè)置
, 點(diǎn)擊去
- 可以看到
環(huán)境變量
, 點(diǎn)進(jìn)去
- 找到系統(tǒng)變量中的
Path
選中, 再點(diǎn)擊編輯
- 進(jìn)入后點(diǎn)擊
新建
- 將安裝路徑復(fù)制進(jìn)去,比如我安裝的路徑為
D:\Tesseract-OCR
- 復(fù)制進(jìn)去后點(diǎn)擊
確認(rèn)
- 重新進(jìn)入到命令行中
輸入tesseract -v
, 若出現(xiàn)版本號(hào)則設(shè)置成功
OK, tesseract
算是安裝完成了, 接下來(lái)使用python去操作它了!
安裝python的第三方庫(kù)
Pytesseract庫(kù)
- Pytesseract 是一個(gè) Python 的 OCR(Optical Character Recognition,光學(xué)字符識(shí)別)庫(kù),可以用來(lái)將圖片、PDF 等文件中的文本轉(zhuǎn)換為可編輯的文本格式。它基于 Google 的 Tesseract OCR 引擎,支持多種語(yǔ)言,并且具有較高的準(zhǔn)確率和穩(wěn)定性。
- 安裝 Pytesseract 庫(kù)可以使用 pip 工具快速完成。按照以下步驟進(jìn)行操作:
- 打開(kāi)命令行工具(Windows: cmd,Linux/macOS: Terminal)。
- 輸入以下命令來(lái)安裝 Pytesseract:
pip install pytesseract
- 等待安裝完成即可。
有一點(diǎn)需要注意的是,Pytesseract 庫(kù)依賴于 Tesseract OCR 引擎,因此在安裝 Pytesseract 之前請(qǐng)確保已安裝 Tesseract OCR。如果還沒(méi)有安裝 Tesseract OCR,請(qǐng)先下載和安裝它,然后再安裝 Pytesseract。
- 可以使用
pip list
命令列出你已經(jīng)安裝的python庫(kù)
Pillow庫(kù)
- Pillow 是一個(gè)功能強(qiáng)大的圖像處理庫(kù),可以處理多種格式的圖像文件,支持圖像處理、圖像增強(qiáng)、圖像轉(zhuǎn)換等多種操作。
- 因?yàn)樽R(shí)別圖片需要用到PIL(Python Imaging Library)庫(kù)中的 Image 模塊
使用 pip 工具來(lái)安裝 Pillow 庫(kù)。以下是安裝 Pillow 庫(kù)的命令:
pip install pillow
安裝完成后,就可以在 Python 中使用 from PIL import Image
來(lái)進(jìn)行圖像處理和操作了。
運(yùn)行個(gè)demo
比如識(shí)別這張圖
import pytesseract from PIL import Image # 加載圖片 img = Image.open('images/demo.png') # 轉(zhuǎn)換為灰度圖像 img = img.convert('L') # 識(shí)別文本, 使用pytesseract庫(kù)進(jìn)行OCR識(shí)別 text = pytesseract.image_to_string(img) # 輸出識(shí)別結(jié)果 print(text)
注意: 默認(rèn)識(shí)別英文和數(shù)字
識(shí)別效果:
因?yàn)槎际侵形? 識(shí)別不出來(lái)
- 若要識(shí)別中文, 得進(jìn)行配置 (前提是安裝tesseract時(shí)要選擇下載好中文簡(jiǎn)體數(shù)據(jù)包才能進(jìn)行使用)
import pytesseract from PIL import Image # 加載圖片 img = Image.open('images/demo.png') # 轉(zhuǎn)換為灰度圖像 img = img.convert('L') # 識(shí)別文本, 使用pytesseract庫(kù)進(jìn)行OCR識(shí)別, 將語(yǔ)言設(shè)置成中文 text = pytesseract.image_to_string(img, lang='chi_sim') # 輸出識(shí)別結(jié)果 print(text)
這個(gè)識(shí)別的正確率還可以, 這取決于圖片的質(zhì)量和文字的清晰規(guī)整程度
OK, 上述只是簡(jiǎn)單的小例子,更多用法可以自行探索, 還可以設(shè)置其他參數(shù)來(lái)提高文字的識(shí)別正確率!
- 使用說(shuō)明文檔https://github.com/madmaze/pytesseract/blob/master/README.rst
比如下面是官方的說(shuō)明例子:
from PIL import Image import pytesseract # 如果您的PATH中沒(méi)有tesseract可執(zhí)行文件,請(qǐng)包括以下內(nèi)容: pytesseract.pytesseract.tesseract_cmd = r'<full_path_to_your_tesseract_executable>' # 示例 tesseract_cmd = r'C:\Program Files (x86)\Tesseract-OCR\tesseract' # 簡(jiǎn)單的圖像轉(zhuǎn)字符串 print(pytesseract.image_to_string(Image.open('test.png'))) # 為了繞過(guò)pytesseract的圖像轉(zhuǎn)換,只需使用相對(duì)或絕對(duì)圖像路徑 # 注意:在這種情況下,您應(yīng)該提供tesseract支持的圖像,否則tesseract將返回錯(cuò)誤 print(pytesseract.image_to_string('test.png')) # 可用語(yǔ)言列表 print(pytesseract.get_languages(config='')) # 將法語(yǔ)文本圖像轉(zhuǎn)換為字符串 print(pytesseract.image_to_string(Image.open('test-european.jpg'), lang='fra')) # 使用包含多個(gè)圖像文件路徑列表的單個(gè)文件進(jìn)行批處理 print(pytesseract.image_to_string('images.txt')) # 在一段時(shí)間后超時(shí)/終止tesseract作業(yè) try: print(pytesseract.image_to_string('test.jpg', timeout=2)) # 在2秒后超時(shí) print(pytesseract.image_to_string('test.jpg', timeout=0.5)) # 半秒后超時(shí) except RuntimeError as timeout_error: # tesseract處理已終止 pass # 獲取邊界框估計(jì) print(pytesseract.image_to_boxes(Image.open('test.png'))) # 獲取詳細(xì)數(shù)據(jù),包括框、置信度、行和頁(yè)碼 print(pytesseract.image_to_data(Image.open('test.png'))) # 獲取有關(guān)方向和腳本檢測(cè)的信息 print(pytesseract.image_to_osd(Image.open('test.png'))) # 獲取可搜索的PDF pdf = pytesseract.image_to_pdf_or_hocr('test.png', extension='pdf') with open('test.pdf', 'w+b') as f: f.write(pdf) # pdf類型默認(rèn)為bytes # 獲取HOCR輸出 hocr = pytesseract.image_to_pdf_or_hocr('test.png', extension='hocr') # 獲取ALTO XML輸出 xml = pytesseract.image_to_alto_xml('test.png')
以上就是使用python進(jìn)行圖片的文字識(shí)別詳細(xì)代碼的詳細(xì)內(nèi)容,更多關(guān)于python 圖片文字識(shí)別的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
PyCharm2020.1.1與Python3.7.7的安裝教程圖文詳解
這篇文章主要介紹了PyCharm2020.1.1與Python3.7.7的安裝教程,本文通過(guò)圖文并茂的形式給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-08-08淺談Python數(shù)學(xué)建模之線性規(guī)劃
線性規(guī)劃是運(yùn)籌學(xué)中研究較早、發(fā)展較快、應(yīng)用廣泛、方法較成熟的一個(gè)重要分支,它是輔助人們進(jìn)行科學(xué)管理的一種數(shù)學(xué)方法。研究線性約束條件下線性目標(biāo)函數(shù)的極值問(wèn)題的數(shù)學(xué)理論和方法2021-06-06使用 Python 和 OpenCV 實(shí)現(xiàn)實(shí)時(shí)人臉識(shí)別功能
本文詳細(xì)講解了使用Python和OpenCV庫(kù)實(shí)行實(shí)時(shí)人臉識(shí)別的過(guò)程,首先,確保安裝OpenCV庫(kù),并通過(guò)Haar級(jí)聯(lián)分類器進(jìn)行人臉檢測(cè),實(shí)現(xiàn)步驟包括打開(kāi)攝像頭、圖像灰度轉(zhuǎn)換、人臉檢測(cè)及繪制矩形框,代碼示例清晰展示了從設(shè)置攝像頭到最終展示檢測(cè)結(jié)果的完整過(guò)程2024-11-11Python網(wǎng)絡(luò)爬蟲(chóng)信息提取mooc代碼實(shí)例
這篇文章主要介紹了python網(wǎng)絡(luò)爬蟲(chóng)與信息提取mooc,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-03-03Python內(nèi)置函數(shù)round()的用法和注意事項(xiàng)詳解
這篇文章主要介紹了Python中round()函數(shù)的相關(guān)資料,包括其基本語(yǔ)法、使用示例和注意事項(xiàng),文中通過(guò)代碼介紹的非常詳細(xì),需要的朋友可以參考下2025-03-03python中使用時(shí)間戳timestamp問(wèn)題
文章介紹了Python中使用時(shí)間戳和時(shí)間模塊的操作,包括獲取當(dāng)前時(shí)間、計(jì)算程序運(yùn)行時(shí)間以及時(shí)間戳與時(shí)間字符串之間的轉(zhuǎn)換2025-02-02