用python寫一個圖像文字識別OCR工具

向AI轉(zhuǎn)型的程序員都關(guān)注了這個號??????
什么是OCR?
OCR是英文optical character recognition的首字母縮寫,中文意思:光學(xué)字符識別。或者我們管它叫做:文字識別。文字識別是指電子設(shè)備(例如掃描儀或數(shù)碼相機(jī))檢查紙上打印的字符,然后用字符識別方法將形狀翻譯成計算機(jī)文字的過程;即,對文本資料進(jìn)行掃描,然后對圖像文件進(jìn)行分析處理,獲取文字及版面信息的過程。通俗理解,舉個例子:就是把圖片\PDF里的文字信息進(jìn)行抓取,轉(zhuǎn)換成Word、TXT等可以編輯的文字文本。
掃描文檔僅僅呈現(xiàn)紙質(zhì)文檔最原始的圖像形式,由于文本無法被軟件讀取,從掃描文檔中提取信息通常需要耗時耗力的手動工作。工作量大且容易出錯。然而,通過光學(xué)字符識別 (OCR)可識別獲取文檔內(nèi)容,將其自動轉(zhuǎn)化為可搜索的文字文檔,如word/PDF,轉(zhuǎn)換后的文檔可以作為數(shù)據(jù)保存,大幅降低勞動力,提高工作效率。
衡量一個OCR系統(tǒng)性能好壞的主要指標(biāo)有:拒識率、誤識率、識別速度、用戶界面的友好性,產(chǎn)品的穩(wěn)定性,易用性及可行性等。
PP-OCR是PaddleOCR團(tuán)隊自研的超輕量OCR系統(tǒng),面向OCR產(chǎn)業(yè)應(yīng)用,權(quán)衡精度與速度。近期,PaddleOCR團(tuán)隊針對PP-OCRv2的檢測模塊和識別模塊,進(jìn)行共計9個方面的升級,打造出一款全新的、效果更優(yōu)的超輕量OCR系統(tǒng):PP-OCRv3。
從效果上看,速度可比情況下,多種場景精度均有大幅提升:
-
中文場景,相比于PP-OCRv2中文模型提升超5%;
-
英文數(shù)字場景,相比于PP-OCRv2英文數(shù)字模型提升11%;
-
多語言場景,優(yōu)化80+語種識別效果,平均準(zhǔn)確率提升超5%。
-


全新升級的PP-OCRv3的整體的框架圖(粉色框中為PP-OCRv3新增策略)如下圖。檢測模塊仍基于DB算法優(yōu)化,而識別模塊不再采用CRNN,更新為IJCAI 2022最新收錄的文本識別算法SVTR (論文名稱:SVTR: Scene Text Recognition with a Single Visual Model ?),并對其進(jìn)行產(chǎn)業(yè)適配。

最近在技術(shù)交流群里聊到一個關(guān)于圖像文字識別的需求,在工作、生活中常常會用到,比如票據(jù)、漫畫、掃描件、照片的文本提取。
基于 PyQt + labelme + PaddleOCR 寫了一個桌面端的OCR工具,用于快速實現(xiàn)圖片中文本區(qū)域自動檢測+文本自動識別。
識別效果如下圖所示:

所有框選區(qū)域為OCR算法自動檢測,右側(cè)列表有每個框?qū)?yīng)的文字內(nèi)容;
點擊右側(cè)“識別結(jié)果”中的文本記錄,然后點擊“復(fù)制到剪貼板”即可復(fù)制該文本內(nèi)容。
功能列表
文本區(qū)域檢測+文字識別
文本區(qū)域可視化
文字內(nèi)容列表
圖像、文件夾加載
圖像滾輪縮放查看
繪制區(qū)域、編輯區(qū)域
復(fù)制所選文本識別結(jié)果
OCR部分
圖像文字檢測+文字識別算法,主要借助 paddleocr 實現(xiàn)。
創(chuàng)建或者選擇一個虛擬環(huán)境,安裝需要用到的第三方庫。
conda create -n ocr conda activate ocr
?
安裝框架
如果你沒有NVIDIA GPU,或GPU不支持CUDA,可以安裝CPU版本:
# CPU版本
pip install paddlepaddle == 2.1 .0
-i https://mirror.baidu.com/pypi/simple
如果你的GPU安裝過CUDA9或CUDA10,cuDNN 7.6+,可以選擇下面這個GPU版本:
# GPU版本 python3 -m
pip install paddlepaddle-gpu == 2.1 .0
-i https://mirror.baidu.com/pypi/simple
安裝 PaddleOCR
安裝paddleocr:
pip install "paddleocr>=2.0.1" # 推薦使用2.0.1+版本
版面分析,需要安裝 Layout-Parser:
pip3 install -U https://paddleocr.bj.bcebos.com/whl/layoutparser-0.0.0-py3-none-any.whl
測試安裝是否成功
安裝完成后,測試一張圖片--image_dir ./imgs/11.jpg,采用中英文檢測+方向分類器+識別全流程:
paddleocr --image_dir ./imgs/11.jpg --use_angle_cls true --use_gpu false
輸出一個list:

?在python中調(diào)用

輸出結(jié)果是一個list,每個item包含了文本框,文字和識別置信度:

界面部分
界面部分基于 pyqt5 實現(xiàn)。
pyqt GUI程序開發(fā)入門和環(huán)境配置,詳見這篇博客。
https://blog.csdn.net/Bit_Coders/article/details/119304488
主要步驟:
1. 界面布局設(shè)計
在QtDesigner中拖拽控件,完成程序界面布局,并保存*.ui文件。

2. 利用 pyuic 自動生成界面代碼
在 pycharm 的項目文件結(jié)構(gòu)中找到*.ui文件,右鍵——External Tools——pyuic,會在ui文件同級目錄下自動生成界面 ui 的 python 代碼。

3. 編寫界面業(yè)務(wù)類
業(yè)務(wù)類 MainWindow 實現(xiàn)程序邏輯和算法功能,與前面第2步生成的ui實現(xiàn)解耦,避免每次修改ui文件會影響業(yè)務(wù)代碼。ui界面上的控件可以通過self._ui.xxxObjectName?訪問。

4. 實現(xiàn)界面業(yè)務(wù)邏輯
對主界面上的按鈕、列表、繪圖控件進(jìn)行信號槽連接。自定義的槽函數(shù)不用專門聲明,如果是自定義的信號,需要在類__init__()前加上 yourSignal= pyqtSignal(args)。
這里以按鈕響應(yīng)函數(shù)、列表響應(yīng)函數(shù)為例。按鈕點擊的信號是 clicked,listWidget列表切換選擇的信號是 itemSelectionChanged 。

5. 運行看看效果
運行 python main.py 即可啟動GUI程序。
打開圖片→選擇語言模型ch(中文)→選擇文本檢測+識別→點擊開始,檢測完的文本區(qū)域會自動畫框,并在右側(cè)識別結(jié)果——文本Tab頁的列表中顯示。

所有檢測出文本的區(qū)域列表,在識別結(jié)果——區(qū)域Tab頁:

原文地址
https://blog.csdn.net/Bit_Coders/article/details/121561632
機(jī)器學(xué)習(xí)算法AI大數(shù)據(jù)技術(shù)
?搜索公眾號添加:? datanlp
長按圖片,識別二維碼
閱讀過本文的人還看了以下文章:
TensorFlow 2.0深度學(xué)習(xí)案例實戰(zhàn)
基于40萬表格數(shù)據(jù)集TableBank,用MaskRCNN做表格檢測
《基于深度學(xué)習(xí)的自然語言處理》中/英PDF
Deep Learning 中文版初版-周志華團(tuán)隊
【全套視頻課】最全的目標(biāo)檢測算法系列講解,通俗易懂!
《美團(tuán)機(jī)器學(xué)習(xí)實踐》_美團(tuán)算法團(tuán)隊.pdf
《深度學(xué)習(xí)入門:基于Python的理論與實現(xiàn)》高清中文PDF+源碼
《深度學(xué)習(xí):基于Keras的Python實踐》PDF和代碼
python就業(yè)班學(xué)習(xí)視頻,從入門到實戰(zhàn)項目
2019最新《PyTorch自然語言處理》英、中文版PDF+源碼
《21個項目玩轉(zhuǎn)深度學(xué)習(xí):基于TensorFlow的實踐詳解》完整版PDF+附書代碼
《深度學(xué)習(xí)之pytorch》pdf+附書源碼
PyTorch深度學(xué)習(xí)快速實戰(zhàn)入門《pytorch-handbook》
【下載】豆瓣評分8.1,《機(jī)器學(xué)習(xí)實戰(zhàn):基于Scikit-Learn和TensorFlow》
《Python數(shù)據(jù)分析與挖掘?qū)崙?zhàn)》PDF+完整源碼
汽車行業(yè)完整知識圖譜項目實戰(zhàn)視頻(全23課)
李沐大神開源《動手學(xué)深度學(xué)習(xí)》,加州伯克利深度學(xué)習(xí)(2019春)教材
筆記、代碼清晰易懂!李航《統(tǒng)計學(xué)習(xí)方法》最新資源全套!
《神經(jīng)網(wǎng)絡(luò)與深度學(xué)習(xí)》最新2018版中英PDF+源碼
將機(jī)器學(xué)習(xí)模型部署為REST API
FashionAI服裝屬性標(biāo)簽圖像識別Top1-5方案分享
重要開源!CNN-RNN-CTC 實現(xiàn)手寫漢字識別
同樣是機(jī)器學(xué)習(xí)算法工程師,你的面試為什么過不了?
前海征信大數(shù)據(jù)算法:風(fēng)險概率預(yù)測
【Keras】完整實現(xiàn)‘交通標(biāo)志’分類、‘票據(jù)’分類兩個項目,讓你掌握深度學(xué)習(xí)圖像分類
VGG16遷移學(xué)習(xí),實現(xiàn)醫(yī)學(xué)圖像識別分類工程項目
特征工程(二) :文本數(shù)據(jù)的展開、過濾和分塊
如何利用全新的決策樹集成級聯(lián)結(jié)構(gòu)gcForest做特征工程并打分?
Machine Learning Yearning 中文翻譯稿
斯坦福CS230官方指南:CNN、RNN及使用技巧速查(打印收藏)
python+flask搭建CNN在線識別手寫中文網(wǎng)站
中科院Kaggle全球文本匹配競賽華人第1名團(tuán)隊-深度學(xué)習(xí)與特征工程
不斷更新資源
深度學(xué)習(xí)、機(jī)器學(xué)習(xí)、數(shù)據(jù)分析、python
?搜索公眾號添加:? datayx??
