????????python實現提取圖片中的文字,使用PaddleOCR識別最精準,因為只需要識別小尺寸圖片,速度在一秒鐘左右,對于要應用的項目可以接受。缺點是項目打包有將近600M,壓縮后也有將近200M。Tesseract雖然速度快,占用空間小,但是對藝術字體識別精度極差,所以排除使用。
? ? ? ? 一個提取文字的極簡需求,代碼只有幾十行。前后使用了三種方法,外加使用了PaddleOCR的三個版本,折騰好幾天,終于可以了。打包后600M的空間真的驚到我了。
? ? ? ? 另使用PaddleOCR舊版本是因為使用方便,穩定,參考資料多。
開發環境版本:
? ? ? ? 1.python3.12.10
????????2.paddle2.6.0
? ? ? ? 3.PaddleOCR2.8.0
一、生成spec文件,不介紹。
二、修改spec文件內容,僅展示修改部分
a = Analysis(['PaddleOCRTest.py'],pathex=['E:\\Programs\\python\\pao\\.venv\\Lib\\site-packages','E:\\Programs\\python\\pao\\.venv\\Lib\\site-packages\\paddle\\libs'],binaries=[('E:\\Programs\\python\\pao\\.venv\\Lib\\site-packages\\paddle\\libs','.')],datas=[('E:\\Programs\\python\\pao\\.venv\\Lib\\site-packages\\paddleocr\\ppocr', 'paddleocr\\ppocr'),('E:\\Programs\\python\\pao\\.venv\\Lib\\site-packages\\paddleocr\\tools', 'paddleocr\\tools'),('E:\\Programs\\python\\pao\\.venv\\Lib\\site-packages\\paddleocr\\ppstructure', 'paddleocr\\ppstructure')],hiddenimports=['shapely.geometry','pyclipper','skimage', 'skimage.morphology', 'imgaug', 'lmdb'],hookspath=[],hooksconfig={},runtime_hooks=[],excludes=[],win_no_prefer_redirects=False,win_private_assemblies=False,noarchive=False,optimize=0, )
三、遇到的問題:
????????1.提示:unhandledexception:?cannot import name 'imaging' from 'PlL'
? ? ? ? ? ? ? ? 解決方法:到.venv\Lib\site-packages目錄下復制PIL文件夾到打包后的_internal文件夾
? ? ? ? 2.提示:ModuleNotFoundError: No module named 'XXX'
????????????????解決方法:將模塊名稱'XXX'添加到spec文件的hiddenimports內,然后重新打包,直到不彈出該類型錯誤為止。
參考文章:
????????Pyinstaller 打包 PaddleOcr + PyQt5 項目的打包過程、常見問題及解決方法_paddleocr打包太難了-CSDN博客