python3安裝OCR識(shí)別庫(kù)tesserocr過程圖解
OCR簡(jiǎn)介
OCR,即Optical Character Recognition,光學(xué)字符識(shí)別,是指通過掃描字符,然后通過其形狀將其翻譯成電子文本的過程,對(duì)應(yīng)圖形驗(yàn)證碼來說,它們都是一些不規(guī)則的字符,這些字符是由字符稍加扭曲變換得到的內(nèi)容,我們可以使用OCR技術(shù)來講其轉(zhuǎn)化為電子文本,然后將結(jié)果提取交給服務(wù)器,便可以達(dá)到自動(dòng)識(shí)別驗(yàn)證碼的過程。
window環(huán)境
環(huán)境材料準(zhǔn)備
- Window10
- Python-3.7.3.tgz
- tesserocr安裝包
安裝tesserocr
1、打開鏈接,https://digi.bib.uni-mannheim.de/tesseract/,見下圖。

下載最新版的tesseract-ocr-w64-setup-v5.0.0.20190623.exe,然后安裝,本人直接安裝在C盤目錄下。安裝完畢后,如下圖。

配置環(huán)境變量,有兩個(gè)步驟。
在系統(tǒng)變量里,修改path,如下圖。

在系統(tǒng)變量里,創(chuàng)建一個(gè)新的變量名為:TESSDATA_PREFIX,值為:C:\Program Files\Tesseract-OCR\tessdata(根據(jù)自己安裝的tesserocr安裝路徑為準(zhǔn)),如下圖。

檢查Tesseract-OCR是否安裝完成,如下圖。

Python3.7加載tesserocr
1、安裝Python的OCR識(shí)別庫(kù)
pip install Pillow
pip install pytesseract
2、python加載Window的tesserocr應(yīng)用,要修改pytesseract三方庫(kù)的pytesseract.py腳本。

打開pytesseract.py,將Window的tesserocr應(yīng)用的tesserocr.exe綁定好。

3、到這里Python的綁定window的tesserocr應(yīng)用已經(jīng)完成。
讀取驗(yàn)證碼圖片

from PIL import Image
import pytesseract
def read_text(text_path):
"""
傳入文本(jpg、png)的絕對(duì)路徑,讀取文本
:param text_path:
:return: 文本內(nèi)容
"""
# 驗(yàn)證碼圖片轉(zhuǎn)字符串
im = Image.open(text_path)
# 轉(zhuǎn)化為8bit的黑白圖片
imgry = im.convert('L')
# 二值化,采用閾值分割算法,threshold為分割點(diǎn)
threshold = 140
table = []
for j in range(256):
if j < threshold:
table.append(0)
else:
table.append(1)
out = imgry.point(table, '1')
# 識(shí)別文本
text = pytesseract.image_to_string(out, lang="eng", config='--psm 6')
return text
if __name__ == '__main__':
print(read_text("d://v3.png"))
輸出:

讀取中文文本圖片
1、因?yàn)镺CR讀取不同語言需要加載語言包,因此需要下載簡(jiǎn)體中文語言包。
從這個(gè)鏈接下載:https://github.com/tesseract-ocr/tessdata,下載紅圈的簡(jiǎn)體中文包。然后將此文件放置window的安裝目錄下。如下兩個(gè)圖。


現(xiàn)在,我們來讀取如下圖片的中文文本內(nèi)容。

代碼如下:
from PIL import Image
import pytesseract
def read_text(text_path):
"""
傳入文本(jpg、png)的絕對(duì)路徑,讀取文本
:param text_path:
:return: 文本內(nèi)容
"""
# 驗(yàn)證碼圖片轉(zhuǎn)字符串
im = Image.open(text_path)
# 轉(zhuǎn)化為8bit的黑白圖片
imgry = im.convert('L')
# 二值化,采用閾值分割算法,threshold為分割點(diǎn)
threshold = 140
table = []
for j in range(256):
if j < threshold:
table.append(0)
else:
table.append(1)
out = imgry.point(table, '1')
# 識(shí)別文本,lang參數(shù)改為chi_sim,其他代碼與上面的讀取驗(yàn)證碼代碼一致。
text = pytesseract.image_to_string(out, lang="chi_sim", config='--psm 6')
return text
if __name__ == '__main__':
print(read_text("d://v7.png"))

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
- 基于Python實(shí)現(xiàn)對(duì)PDF文件的OCR識(shí)別
- 初探利用Python進(jìn)行圖文識(shí)別(OCR)
- 如何使用Python進(jìn)行OCR識(shí)別圖片中的文字
- Python文字截圖識(shí)別OCR工具實(shí)例解析
- Python圖像處理之圖片文字識(shí)別功能(OCR)
- python實(shí)現(xiàn)百度OCR圖片識(shí)別過程解析
- Python基于百度AI實(shí)現(xiàn)OCR文字識(shí)別
- Python3實(shí)現(xiàn)騰訊云OCR識(shí)別
- Python 實(shí)現(xiàn)任意區(qū)域文字識(shí)別(OCR)操作
- 小白學(xué)Python之實(shí)現(xiàn)OCR識(shí)別
相關(guān)文章
Python實(shí)現(xiàn)計(jì)算最小編輯距離
這篇文章主要介紹了Python實(shí)現(xiàn)計(jì)算最小編輯距離的相關(guān)代碼,有需要的小伙伴可以參考下2016-03-03
用selenium解決滑塊驗(yàn)證碼的實(shí)現(xiàn)步驟
驗(yàn)證碼作為一種自然人的機(jī)器人的判別工具,被廣泛的用于各種防止程序做自動(dòng)化的場(chǎng)景中,下面這篇文章主要給大家介紹了關(guān)于用selenium解決滑塊驗(yàn)證碼的實(shí)現(xiàn)步驟,需要的朋友可以參考下2023-02-02
Python提取JSON格式數(shù)據(jù)實(shí)戰(zhàn)案例
這篇文章主要給大家介紹了關(guān)于Python提取JSON格式數(shù)據(jù)的相關(guān)資料, Python提供了內(nèi)置的json模塊,用于處理JSON數(shù)據(jù),文中給出了詳細(xì)的代碼示例,需要的朋友可以參考下2023-07-07
python 實(shí)現(xiàn)Harris角點(diǎn)檢測(cè)算法
這篇文章主要介紹了python 實(shí)現(xiàn)Harris角點(diǎn)檢測(cè)算法,幫助大家更好的利用python處理圖像,感興趣的朋友可以了解下2020-12-12
python使用遞歸實(shí)現(xiàn)斐波那契數(shù)列的示例詳解
這篇文章主要給大家介紹了python使用遞歸實(shí)現(xiàn)斐波那契數(shù)列的示例,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者使用Python具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來一起來學(xué)習(xí)吧2024-01-01
Python實(shí)現(xiàn)刪除文件中含“指定內(nèi)容”的行示例
這篇文章主要介紹了Python實(shí)現(xiàn)刪除文件中含“指定內(nèi)容”的行功能,涉及Python針對(duì)文件讀取及字符串遍歷、判斷等相關(guān)操作技巧,需要的朋友可以參考下2017-06-06
Python中l(wèi)ambda表達(dá)式的用法示例小結(jié)
本文主要展示了一些lambda表達(dá)式的使用示例,通過這些示例,我們可以了解到lambda表達(dá)式的常用語法以及使用的場(chǎng)景,感興趣的朋友跟隨小編一起看看吧2024-04-04

