天天看點

Python利用OCR提取圖檔中的文字

作者:虛壞叔叔

早餐店不會開到晚上,想吃的人早就來了!😄

Python利用OCR提取圖檔中的文字

Python利用OCR提取圖檔中的文字

很多軟體内置了​

​OCR​

​​功能,即圖檔提取文字功能。有些是免費提供給大家使用,但有些是收費的。不管是免費的還是收費的,終究逃離不了隐私問題。用别人的​

​OCR​

​​,總得把圖檔傳到對方的伺服器。今天我們使用​

​Python​

​​開發一個​

​OCR​

​軟體,如下圖所示。

Python利用OCR提取圖檔中的文字

一、 安裝環境

本文基于​

​PaddleOCR​

​​搭建本地開發圖檔提取文字軟體,是以需要安裝​

​PaddlePaddle​

​環境。

1.1 安裝PaddlePaddle

如果您的機器有安裝​

​CUDA9​

​​或​

​CUDA10​

​​,推薦安裝​

​GPU​

​​版本的​

​PaddlePaddle​

​,享受更快的運作速度。運作以下指令安裝:

python -m pip install paddlepaddle-gpu -i https://mirror.baidu.com/pypi/simple      

如果您的機器隻有​

​CPU​

​環境,運作速度會稍微慢一點。請運作以下指令安裝

python -m pip install paddlepaddle -i https://mirror.baidu.com/pypi/simple      

1.2 安裝PaddleOCR whl包

有了​

​PaddlePaddle​

​環境後,接下來安裝PaddleOCR庫,推薦使用2.0.1+版本:

pip install "paddleocr>=2.0.1"      

注意:

對于​

​Windows​

​​環境使用者:直接通過​

​pip​

​​安裝的​

​shapely​

​​庫可能出現​

​[winRrror 126]​

​​找不到指定子產品的問題。建議從這裡https://www.lfd.uci.edu/~gohlke/pythonlibs/#shapely下載下傳​

​shapely​

​安裝包完成安裝。

二、調用OCR

調用​

​OCR​

​​過程非常簡單,導入​

​PaddleOCR​

​​後,直接建立​

​PaddleOCR​

​對象:

from paddleocr import PaddleOCR
ocr = PaddleOCR(use_angle_cls=True, lang="ch")
ocr.ocr(img_path, cls=True)      

第​

​2​

​​行代碼中,​

​use_angle_cls​

​​參數用于确定是否使用角度分類模型,即是否識别垂直方向的文字。​

​lang​

​​參數表示識别的語言,我們傳入​

​ch​

​,表示識别漢字。

第​

​3​

​​行代碼中, ​

​img_path​

​​表示圖檔路徑,​

​cls​

​表示是否使用角度分類模型。

三、開發界面

有了以上代碼就可以完成​

​OCR​

​​功能,但使用起來還不夠友善,我們進一步将​

​OCR​

​​功能封裝成軟體,便于互動。首先安裝​

​PyQT5​

​:

pip install PyQt5      
class OCRGUI(QWidget):

    # 其他代碼略...

    def run_ocr(self, img_path):
        result = self.ocr.ocr(img_path, cls=True)
        self.text.clear() 
        txts = [line[1][0] for line in result]
        for txt in txts:
            self.text.insertPlainText(txt + "\n")
        self.loading.hide()      

四、總結

  • 本文完成OCR提取圖檔中的文字。