最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

基于Python實現(xiàn)圖像文字識別OCR工具

 更新時間:2021年12月09日 09:34:53   作者:蝦米小餛飩  
在工作、生活中常常會用到,比如票據(jù)、漫畫、掃描件、照片的文本提取。本文主要介紹了基于PyQt + PaddleOCR實現(xiàn)的一個桌面端的OCR工具,用于快速實現(xiàn)圖片中文本區(qū)域自動檢測+文本自動識別,需要的朋友可以參考一下

引言

最近在技術交流群里聊到一個關于圖像文字識別的需求,在工作、生活中常常會用到,比如票據(jù)、漫畫、掃描件、照片的文本提取。

博主基于 PyQt + PaddleOCR 寫了一個桌面端的OCR工具,用于快速實現(xiàn)圖片中文本區(qū)域自動檢測+文本自動識別。

識別效果如下圖所示:

所有框選區(qū)域為OCR算法自動檢測,右側列表有每個框?qū)奈淖謨?nèi)容;

點擊右側“識別結果”中的文本記錄,然后點擊“復制到剪貼板”即可復制該文本內(nèi)容。

功能列表

  • 文本區(qū)域檢測+文字識別
  • 文本區(qū)域可視化
  • 文字內(nèi)容列表
  • 圖像、文件夾加載
  • 圖像滾輪縮放查看
  • 繪制區(qū)域、編輯區(qū)域
  • 復制文本識別結果

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)用

from paddleocr import PaddleOCR, draw_ocr

# Paddleocr目前支持的多語言語種可以通過修改lang參數(shù)進行切換
# 例如`ch`, `en`, `fr`, `german`, `korean`, `japan`
ocr = PaddleOCR(use_angle_cls=True, lang="ch")  # need to run only once to download and load model into memory
img_path = './imgs/11.jpg'
result = ocr.ocr(img_path, cls=True)
for line in result:
    print(line)

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

[[[24.0, 36.0], [304.0, 34.0], [304.0, 72.0], [24.0, 74.0]], [‘純臻營養(yǎng)護發(fā)素', 0.964739]]

[[[24.0, 80.0], [172.0, 80.0], [172.0, 104.0], [24.0, 104.0]], [‘產(chǎn)品信息/參數(shù)', 0.98069626]]

[[[24.0, 109.0], [333.0, 109.0], [333.0, 136.0], [24.0, 136.0]], ['(45元/每公斤,100公斤起訂)', 0.9676722]]

界面部分

界面部分基于 pyqt5 實現(xiàn)。

pyqt GUI程序開發(fā)入門和環(huán)境配置,詳見這篇博客。

主要步驟:

1. 界面布局設計

在QtDesigner中拖拽控件,完成程序界面布局,并保存*.ui文件。

2. 利用 pyuic 自動生成界面代碼

在 pycharm 的項目文件結構中找到*.ui文件,右鍵——External Tools——pyuic,會在ui文件同級目錄下自動生成界面 ui 的 python 代碼。

3. 編寫界面業(yè)務類

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

class MainWindow(QMainWindow):
	FIT_WINDOW, FIT_WIDTH, MANUAL_ZOOM = 0, 1, 2

	def __init__(self):
		super().__init__()  # 調(diào)用父類構造函數(shù),創(chuàng)建QWidget窗體
		self._ui = Ui_MainWindow()  # 創(chuàng)建ui對象
		self._ui.setupUi(self)  # 構造ui
		self.setWindowTitle(__appname__)

		# 加載默認配置
		config = get_config()
		self._config = config	   
		
		# 單選按鈕組
        self.checkBtnGroup = QButtonGroup(self)
        self.checkBtnGroup.addButton(self._ui.checkBox_ocr)
        self.checkBtnGroup.addButton(self._ui.checkBox_det)
        self.checkBtnGroup.addButton(self._ui.checkBox_recog)
        self.checkBtnGroup.addButton(self._ui.checkBox_layoutparser)
        self.checkBtnGroup.setExclusive(True)     

4. 實現(xiàn)界面業(yè)務邏輯

對主界面上的按鈕、列表、繪圖控件進行信號槽連接。自定義的槽函數(shù)不用專門聲明,如果是自定義的信號,需要在類__init__()前加上 yourSignal= pyqtSignal(args)。

這里以按鈕響應函數(shù)、列表響應函數(shù)為例。按鈕點擊的信號是 clicked,listWidget列表切換選擇的信號是 itemSelectionChanged 。

# 按鈕響應函數(shù)
self._ui.btnOpenImg.clicked.connect(self.openFile)
self._ui.btnOpenDir.clicked.connect(self.openDirDialog)
self._ui.btnNext.clicked.connect(self.openNextImg)
self._ui.btnPrev.clicked.connect(self.openPrevImg)
self._ui.btnStartProcess.clicked.connect(self.startProcess)
self._ui.btnCopyAll.clicked.connect(self.copyToClipboard)
self._ui.btnSaveAll.clicked.connect(self.saveToFile)
self._ui.listWidgetResults.itemSelectionChanged.connect(self.onItemResultClicked)

5. 運行看看效果

運行 python main.py 即可啟動GUI程序。

打開圖片→選擇語言模型ch(中文)→選擇文本檢測+識別→點擊開始,檢測完的文本區(qū)域會自動畫框,并在右側識別結果——文本Tab頁的列表中顯示。

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

軟件代碼

由于時間有限,軟件細節(jié)功能還需進一步完善。

代碼已開源到 gitlab 上,歡迎感興趣的朋友提出建議,一起修改完善。

https://gitee.com/signal926/ocr-gui-demo

參考鏈接

畫框、區(qū)域列表:labelme

icons:material-design-icons

https://gitee.com/paddlepaddle/PaddleOCR/blob/release/2.3/doc/doc_ch/quickstart.md

以上就是基于Python實現(xiàn)圖像文字識別OCR工具的詳細內(nèi)容,更多關于Python圖像文字識別的資料請關注腳本之家其它相關文章!

相關文章

  • 利用python實現(xiàn)xml與數(shù)據(jù)庫讀取轉(zhuǎn)換的方法

    利用python實現(xiàn)xml與數(shù)據(jù)庫讀取轉(zhuǎn)換的方法

    這篇文章主要給大家介紹了關于利用python實現(xiàn)xml與數(shù)據(jù)庫讀取轉(zhuǎn)換的方法,文中通過示例代碼介紹的非常詳細,對大家具有一定的參考學習價值,需要的朋友們下面來一起看看吧。
    2017-06-06
  • python之wxPython應用實例

    python之wxPython應用實例

    這篇文章主要介紹了python之wxPython應用實例,以加載圖片為例講述了wxPython的用法,非常具有實用價值,需要的朋友可以參考下
    2014-09-09
  • Python實現(xiàn)一個自助取數(shù)查詢工具

    Python實現(xiàn)一個自助取數(shù)查詢工具

    在數(shù)據(jù)生產(chǎn)應用部門,取數(shù)分析是一個很常見的需求,實際上業(yè)務人員需求時刻變化,最高效的方式是讓業(yè)務部門自己來取,減少不必要的重復勞動,本文介紹如何用Python實現(xiàn)一個自助取數(shù)查詢工具
    2021-06-06
  • python的tkinter布局之簡單的聊天窗口實現(xiàn)方法

    python的tkinter布局之簡單的聊天窗口實現(xiàn)方法

    這篇文章主要介紹了python的tkinter布局之簡單的聊天窗口實現(xiàn)方法,對于tkinter用法做了初步的介紹與應用展示,需要的朋友可以參考下
    2014-09-09
  • Python中sklearn實現(xiàn)交叉驗證示例分析

    Python中sklearn實現(xiàn)交叉驗證示例分析

    這篇文章主要介紹了Python中sklearn實現(xiàn)交叉驗證,本文python的版本為3.8,各個版本之間函數(shù)名字略有不同,但是原理都是一樣的,集成開發(fā)環(huán)境使用的是Anaconda的Spyder,需要的朋友可以參考下
    2023-08-08
  • numpy數(shù)組之存取文件的實現(xiàn)示例

    numpy數(shù)組之存取文件的實現(xiàn)示例

    這篇文章主要介紹了numpy數(shù)組之存取文件的實現(xiàn)示例,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2019-05-05
  • Python RuntimeWarning:invalid value encountered in double_scalars處理

    Python RuntimeWarning:invalid value encounter

    這篇文章主要介紹了Python RuntimeWarning:invalid value encountered in double_scalars處理,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-06-06
  • opencv模板匹配相同位置去除重復的框

    opencv模板匹配相同位置去除重復的框

    這篇文章主要介紹了opencv模板匹配相同位置去除重復的框,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2021-04-04
  • vscode帶命令行參數(shù)進行調(diào)試的方法

    vscode帶命令行參數(shù)進行調(diào)試的方法

    文章介紹了如何在VSCode中使用命令行參數(shù)進行調(diào)試,并描述了如何通過修改`launch.json`文件來簡化調(diào)試過程
    2025-01-01
  • python3操作微信itchat實現(xiàn)發(fā)送圖片

    python3操作微信itchat實現(xiàn)發(fā)送圖片

    這篇文章主要為大家詳細介紹了python3操作微信itchat實現(xiàn)發(fā)送圖片,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-02-02

最新評論

湘西| 兴业县| 浏阳市| 宁强县| 福建省| 泉州市| 阳谷县| 永平县| 定日县| 博爱县| 永宁县| 余庆县| 涿州市| 库伦旗| 荣成市| 尼玛县| 固安县| 芜湖市| 清远市| 临沧市| 沧源| 繁峙县| 河南省| 天全县| 和顺县| 旌德县| 华容县| 郓城县| 宜兴市| 顺平县| 股票| 克拉玛依市| 西安市| 卢湾区| 康乐县| 贵德县| 灵山县| 长兴县| 怀安县| 丹东市| 金昌市|