91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

如何用Python實現圖像文字識別OCR工具

發布時間:2021-12-11 14:28:43 來源:億速云 閱讀:368 作者:iii 欄目:開發技術

這篇文章主要介紹“如何用Python實現圖像文字識別OCR工具”,在日常操作中,相信很多人在如何用Python實現圖像文字識別OCR工具問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”如何用Python實現圖像文字識別OCR工具”的疑惑有所幫助!接下來,請跟著小編一起來學習吧!

引言

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

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

識別效果如下圖所示:

如何用Python實現圖像文字識別OCR工具

所有框選區域為OCR算法自動檢測,右側列表有每個框對應的文字內容;

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

功能列表

  • 文本區域檢測+文字識別

  • 文本區域可視化

  • 文字內容列表

  • 圖像、文件夾加載

  • 圖像滾輪縮放查看

  • 繪制區域、編輯區域

  • 復制文本識別結果

OCR部分

圖像文字檢測+文字識別算法,主要借助 paddleocr 實現。

創建或者選擇一個虛擬環境,安裝需要用到的第三方庫。

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實現圖像文字識別OCR工具

④ 在python中調用

from paddleocr import PaddleOCR, draw_ocr

# Paddleocr目前支持的多語言語種可以通過修改lang參數進行切換
# 例如`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]], [‘純臻營養護發素', 0.964739]]

[[[24.0, 80.0], [172.0, 80.0], [172.0, 104.0], [24.0, 104.0]], [‘產品信息/參數', 0.98069626]]

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

界面部分

界面部分基于 pyqt5 實現。

pyqt GUI程序開發入門和環境配置,詳見這篇博客。

主要步驟:

1. 界面布局設計

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

如何用Python實現圖像文字識別OCR工具

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

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

如何用Python實現圖像文字識別OCR工具

3. 編寫界面業務類

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

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

	def __init__(self):
		super().__init__()  # 調用父類構造函數,創建QWidget窗體
		self._ui = Ui_MainWindow()  # 創建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. 實現界面業務邏輯

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

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

# 按鈕響應函數
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(中文)→選擇文本檢測+識別→點擊開始,檢測完的文本區域會自動畫框,并在右側識別結果——文本Tab頁的列表中顯示。

如何用Python實現圖像文字識別OCR工具

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

如何用Python實現圖像文字識別OCR工具

到此,關于“如何用Python實現圖像文字識別OCR工具”的學習就結束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學習,快去試試吧!若想繼續學習更多相關知識,請繼續關注億速云網站,小編會繼續努力為大家帶來更多實用的文章!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

皮山县| 紫金县| 舒城县| 那坡县| 遵义县| 吴堡县| 宿松县| 怀柔区| 大竹县| 长乐市| 丰顺县| 大同市| 项城市| 阿克苏市| 克山县| 金平| 绥芬河市| 同心县| 东宁县| 普陀区| 高邮市| 盘山县| 江西省| 肥城市| 寻乌县| 余姚市| 延庆县| 大英县| 夏邑县| 伊金霍洛旗| 昌都县| 鹿邑县| 永清县| 凌云县| 辽阳县| 宜州市| 天长市| 阆中市| 兰坪| 周口市| 萨嘎县|