使用Python Pytesseract進行OCR識別

介紹

在數字化時代,OCR(Optical Character Recognition)技術成為了智能化信息處理的重要手段,利用OCR技術能夠將紙質的、印刷的文字自動化地轉換成數字的電子文件,為人們的信息化生活帶來了巨大便利。隨著深度學習技術的不斷發展,OCR技術的準確度和識別速度得到了極大提升,其中Python語言的開源OCR庫Pytesseract就是一款非常受歡迎的技術方案。

使用

Pytesseract是在Python下使用谷歌的Tesseract-OCR引擎的開源包,利用簡單的代碼即可快速實現OCR識別任務。下面將從圖像預處理、文字分割、OCR識別三個方面詳細介紹Pytesseract的使用方法。

圖像預處理

在進行OCR識別任務之前,必須對圖像進行預處理,以提高識別準確度和速度。常用的圖像預處理包括二值化、降噪、去除干擾、傾斜矯正等操作。

import cv2
import numpy as np

def preprocess(image):
    # 灰度化
    gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
    # 高斯模糊
    blurred = cv2.GaussianBlur(gray, (5, 5), 0)
    # 自適應二值化
    thresh = cv2.adaptiveThreshold(blurred, 255, cv2.ADAPTIVE_THRESH_MEAN_C, cv2.THRESH_BINARY_INV, 11, 2)
    # 膨脹
    kernel = np.ones((3,3), np.uint8)
    dilation = cv2.dilate(thresh, kernel, iterations=1)
    # 返回預處理後的圖像
    return dilation

文字分割

在進行OCR識別任務時,由於文本字元的分布和排版具有特殊性,需要對圖像進行適當的分割和定位,以準確地識別每個字元。

def find_text_boxes(image):
    # 二值化
    image = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
    _, binary = cv2.threshold(image, 190, 255, cv2.THRESH_BINARY)
    # 腐蝕
    kernel = np.ones((3, 3), np.uint8)
    binary = cv2.erode(binary, kernel, iterations=1)
    # 輪廓檢測
    contours, _ = cv2.findContours(binary, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)
    # 遍歷輪廓
    boxes = []
    for contour in contours:
        x, y, w, h = cv2.boundingRect(contour)
        # 根據輪廓大小過濾無意義邊框
        if w < 10 or h < 10:
            continue
        box = [x, y, x+w, y+h]
        boxes.append(box)
    return boxes

OCR識別

在進行預處理和分割後,即可利用Pytesseract進行OCR識別任務。

import pytesseract

def ocr(image):
    # 圖像預處理
    image = preprocess(image)
    # 文字分割
    boxes = find_text_boxes(image)
    # OCR識別
    result = ''
    for box in boxes:
        text = pytesseract.image_to_string(image[box[1]:box[3], box[0]:box[2]], lang='chi_sim')
        result += text
    return result

小結

利用Python Pytesseract進行OCR識別任務可以有效地提高信息處理效率和準確度。本文從圖像預處理、文字分割和OCR識別三個方面介紹了Pytesseract的使用方法,希望能夠為讀者提供參考。

原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/187058.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
小藍的頭像小藍
上一篇 2024-11-27 13:34
下一篇 2024-11-27 13:35

相關推薦

  • 如何查看Anaconda中Python路徑

    對Anaconda中Python路徑即conda環境的查看進行詳細的闡述。 一、使用命令行查看 1、在Windows系統中,可以使用命令提示符(cmd)或者Anaconda Pro…

    編程 2025-04-29
  • Python列表中負數的個數

    Python列表是一個有序的集合,可以存儲多個不同類型的元素。而負數是指小於0的整數。在Python列表中,我們想要找到負數的個數,可以通過以下幾個方面進行實現。 一、使用循環遍歷…

    編程 2025-04-29
  • Python周杰倫代碼用法介紹

    本文將從多個方面對Python周杰倫代碼進行詳細的闡述。 一、代碼介紹 from urllib.request import urlopen from bs4 import Bea…

    編程 2025-04-29
  • Python中引入上一級目錄中函數

    Python中經常需要調用其他文件夾中的模塊或函數,其中一個常見的操作是引入上一級目錄中的函數。在此,我們將從多個角度詳細解釋如何在Python中引入上一級目錄的函數。 一、加入環…

    編程 2025-04-29
  • Python計算陽曆日期對應周幾

    本文介紹如何通過Python計算任意陽曆日期對應周幾。 一、獲取日期 獲取日期可以通過Python內置的模塊datetime實現,示例代碼如下: from datetime imp…

    編程 2025-04-29
  • Python字典去重複工具

    使用Python語言編寫字典去重複工具,可幫助用戶快速去重複。 一、字典去重複工具的需求 在使用Python編寫程序時,我們經常需要處理數據文件,其中包含了大量的重複數據。為了方便…

    編程 2025-04-29
  • python強行終止程序快捷鍵

    本文將從多個方面對python強行終止程序快捷鍵進行詳細闡述,並提供相應代碼示例。 一、Ctrl+C快捷鍵 Ctrl+C快捷鍵是在終端中經常用來強行終止運行的程序。當你在終端中運行…

    編程 2025-04-29
  • 蝴蝶優化演算法Python版

    蝴蝶優化演算法是一種基於仿生學的優化演算法,模仿自然界中的蝴蝶進行搜索。它可以應用於多個領域的優化問題,包括數學優化、工程問題、機器學習等。本文將從多個方面對蝴蝶優化演算法Python版…

    編程 2025-04-29
  • Python清華鏡像下載

    Python清華鏡像是一個高質量的Python開發資源鏡像站,提供了Python及其相關的開發工具、框架和文檔的下載服務。本文將從以下幾個方面對Python清華鏡像下載進行詳細的闡…

    編程 2025-04-29
  • Python程序需要編譯才能執行

    Python 被廣泛應用於數據分析、人工智慧、科學計算等領域,它的靈活性和簡單易學的性質使得越來越多的人喜歡使用 Python 進行編程。然而,在 Python 中程序執行的方式不…

    編程 2025-04-29

發表回復

登錄後才能評論