天天看點

Python Opencv 之 使用 teesseract 進行簡單的文字識别(包括中文)Python Opencv 之 使用 teesseract 進行簡單的文字識别(包括中文)

Python Opencv 之 使用 teesseract 進行簡單的文字識别(包括中文)

目錄

Python Opencv 之 使用 teesseract 進行簡單的文字識别(包括中文)

一、簡單介紹

二、pillow、pytesseract 的安裝

1、pip install install 安裝 pillow

2、pip install pytesseract 安裝 pytesseract

三、下載下傳安裝需要 pytesseract 需要的 Tesseract-OCR 工具

特别注意:在使用 pytesseract 中,需要配置 Tesseract-OCR,不然使用不了,報錯:TesseractNotFoundError

1、到官網下載下傳 Tesseract-OCR 工具,選擇自己對應的版本下載下傳即可

2、往下拉找到 Install Tessract via pre-build binary package 進行下載下傳

3、進入 tessdoc 官網,找到對應版本進行下載下傳

4、往下拉,找到自己需要的版本(我這裡是windows)

5、Windows 版本的 安裝包 https://github.com/UB-Mannheim/tesseract/wiki

6、輕按兩下下載下傳包進行安裝即可

7、操作很簡單,根據步驟操作即可

8、安裝的時候,特别記住安裝位置即可,後面可能用到

9、配置 tesseract.exe 路徑到 pytesseract.py 中

四、代碼實作

1、根據以上開始編寫代碼,打開 Pycharm,建立工程,如下圖

2、建立腳本,編輯代碼,大概的識别過程

3、準備好一張識别圖,運作進行識别

五、關鍵代碼

六、附錄中文識别的方法:

1、下載下傳識别中文訓練包,可以從下面位址下載下傳

2、把識别中文的訓練好的包添加到安裝的 Tesseract-OCR\tessdata 目錄下

3、在 image_to_string(textImage, ) 添加

4、識别結果

一、簡單介紹

Python是一種跨平台的計算機程式設計語言。是一種面向對象的動态類型語言,最初被設計用于編寫自動化腳本(shell),随着版本的不斷更新和語言新功能的添加,越多被用于獨立的、大型項目的開發。Python是一種解釋型腳本語言,可以應用于以下領域: Web 和 Internet開發、科學計算和統計、人工智能、教育、桌面界面開發、軟體開發、後端開發、網絡爬蟲。

本節介紹,通過使用 opencv 和 tesseract 進行簡單的文字識别。

二、pillow、pytesseract 的安裝

1、pip install install 安裝 pillow

Python Opencv 之 使用 teesseract 進行簡單的文字識别(包括中文)Python Opencv 之 使用 teesseract 進行簡單的文字識别(包括中文)

2、pip install pytesseract 安裝 pytesseract

Python Opencv 之 使用 teesseract 進行簡單的文字識别(包括中文)Python Opencv 之 使用 teesseract 進行簡單的文字識别(包括中文)

三、下載下傳安裝需要 pytesseract 需要的 Tesseract-OCR 工具

特别注意:在使用 pytesseract 中,需要配置 Tesseract-OCR,不然使用不了,報錯:TesseractNotFoundError

pytesseract.pytesseract.TesseractNotFoundError: tesseract is not installed or it's not in your path

Python Opencv 之 使用 teesseract 進行簡單的文字識别(包括中文)Python Opencv 之 使用 teesseract 進行簡單的文字識别(包括中文)

1、到官網下載下傳 Tesseract-OCR 工具,選擇自己對應的版本下載下傳即可

https://github.com/tesseract-ocr/tesseract/

Python Opencv 之 使用 teesseract 進行簡單的文字識别(包括中文)Python Opencv 之 使用 teesseract 進行簡單的文字識别(包括中文)

2、往下拉找到 Install Tessract via pre-build binary package 進行下載下傳

Python Opencv 之 使用 teesseract 進行簡單的文字識别(包括中文)Python Opencv 之 使用 teesseract 進行簡單的文字識别(包括中文)

3、進入 tessdoc 官網,找到對應版本進行下載下傳

Python Opencv 之 使用 teesseract 進行簡單的文字識别(包括中文)Python Opencv 之 使用 teesseract 進行簡單的文字識别(包括中文)

4、往下拉,找到自己需要的版本(我這裡是windows)

Python Opencv 之 使用 teesseract 進行簡單的文字識别(包括中文)Python Opencv 之 使用 teesseract 進行簡單的文字識别(包括中文)

5、Windows 版本的 安裝包 https://github.com/UB-Mannheim/tesseract/wiki

Python Opencv 之 使用 teesseract 進行簡單的文字識别(包括中文)Python Opencv 之 使用 teesseract 進行簡單的文字識别(包括中文)

6、輕按兩下下載下傳包進行安裝即可

Python Opencv 之 使用 teesseract 進行簡單的文字識别(包括中文)Python Opencv 之 使用 teesseract 進行簡單的文字識别(包括中文)

7、操作很簡單,根據步驟操作即可

Python Opencv 之 使用 teesseract 進行簡單的文字識别(包括中文)Python Opencv 之 使用 teesseract 進行簡單的文字識别(包括中文)

8、安裝的時候,特别記住安裝位置即可,後面可能用到

Python Opencv 之 使用 teesseract 進行簡單的文字識别(包括中文)Python Opencv 之 使用 teesseract 進行簡單的文字識别(包括中文)

9、配置 tesseract.exe 路徑到 pytesseract.py 中

1)在 pytesseract 安裝路徑,找到 pytesseract.py 并打開 找到 "tesseract_cmd" 關鍵字

Python Opencv 之 使用 teesseract 進行簡單的文字識别(包括中文)Python Opencv 之 使用 teesseract 進行簡單的文字識别(包括中文)

2)配置上剛才 tesseract.exe 的安裝路徑,如下圖

Python Opencv 之 使用 teesseract 進行簡單的文字識别(包括中文)Python Opencv 之 使用 teesseract 進行簡單的文字識别(包括中文)

四、代碼實作

1、根據以上開始編寫代碼,打開 Pycharm,建立工程,如下圖

Python Opencv 之 使用 teesseract 進行簡單的文字識别(包括中文)Python Opencv 之 使用 teesseract 進行簡單的文字識别(包括中文)
Python Opencv 之 使用 teesseract 進行簡單的文字識别(包括中文)Python Opencv 之 使用 teesseract 進行簡單的文字識别(包括中文)

2、建立腳本,編輯代碼,大概的識别過程

步驟:1、灰階,二值化處理;2、形态學操作去噪;3、識别;

Python Opencv 之 使用 teesseract 進行簡單的文字識别(包括中文)Python Opencv 之 使用 teesseract 進行簡單的文字識别(包括中文)

3、準備好一張識别圖,運作進行識别

Python Opencv 之 使用 teesseract 進行簡單的文字識别(包括中文)Python Opencv 之 使用 teesseract 進行簡單的文字識别(包括中文)

五、關鍵代碼

import cv2 as cv
from PIL import Image
import pytesseract as tess


def recoginse_text(image):
    """
    步驟:
    1、灰階,二值化處理
    2、形态學操作去噪
    3、識别
    :param image:
    :return:
    """

    # 灰階 二值化
    gray = cv.cvtColor(image,cv.COLOR_BGR2GRAY)
    # 如果是白底黑字 建議 _INV
    ret,binary = cv.threshold(gray,0,255,cv.THRESH_BINARY_INV| cv.THRESH_OTSU)


    # 形态學操作 (根據需要設定參數(1,2))
    kernel = cv.getStructuringElement(cv.MORPH_RECT,(1,2))  #去除橫向細線
    morph1 = cv.morphologyEx(binary,cv.MORPH_OPEN,kernel)
    kernel = cv.getStructuringElement(cv.MORPH_RECT, (2, 1)) #去除縱向細線
    morph2 = cv.morphologyEx(morph1,cv.MORPH_OPEN,kernel)
    cv.imshow("Morph",morph2)

    # 黑底白字取非,變為白底黑字(便于pytesseract 識别)
    cv.bitwise_not(morph2,morph2)
    textImage = Image.fromarray(morph2)

    # 圖檔轉文字
    text=tess.image_to_string(textImage)
    print("識别結果:%s"%text)


def main():

    # 讀取需要識别的數字字母圖檔,并顯示讀到的原圖
    src = cv.imread("RecogniseText_03.jpg")
    cv.imshow("src",src)

    # 識别
    recoginse_text(src)

    cv.waitKey(0)
    cv.destroyAllWindows()

if __name__=="__main__":
    main()


           

六、附錄中文識别的方法:

1、下載下傳識别中文訓練包,可以從下面位址下載下傳

百度網盤自取密碼 v13f

2、把識别中文的訓練好的包添加到安裝的 Tesseract-OCR\tessdata 目錄下

Python Opencv 之 使用 teesseract 進行簡單的文字識别(包括中文)Python Opencv 之 使用 teesseract 進行簡單的文字識别(包括中文)

3、在 image_to_string(textImage, ) 添加

Python Opencv 之 使用 teesseract 進行簡單的文字識别(包括中文)Python Opencv 之 使用 teesseract 進行簡單的文字識别(包括中文)

4、識别結果

Python Opencv 之 使用 teesseract 進行簡單的文字識别(包括中文)Python Opencv 之 使用 teesseract 進行簡單的文字識别(包括中文)