欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

使用Python的pytesseract庫開發(fā)簡(jiǎn)易OCR圖片文字識(shí)別工具

 更新時(shí)間:2025年10月10日 10:12:25   作者:xcLeigh  
在日常工作和學(xué)習(xí)中,我們經(jīng)常會(huì)遇到需要將圖片中的文字提取出來的場(chǎng)景(如掃描件、截圖文字提?。?手動(dòng)輸入不僅效率低還容易出錯(cuò),OCR技術(shù)可以幫我們快速解決這個(gè)問題,本文將帶大家從零開始,使用Python的pytesseract庫開發(fā)一個(gè)簡(jiǎn)易但實(shí)用的OCR識(shí)別工具

前言

本文詳細(xì)介紹了如何用Python的pytesseract庫開發(fā)簡(jiǎn)易OCR識(shí)別工具,適用于提取圖片文字。首先明確核心技術(shù)棧,包括依賴底層的Tesseract OCR引擎,以及pytesseract、OpenCV-Python、Pillow、argparse等庫及其作用。接著分步驟指導(dǎo)環(huán)境搭建,重點(diǎn)說明不同系統(tǒng)下Tesseract OCR引擎的安裝與配置,以及Python依賴庫的安裝。還解釋了圖片預(yù)處理的必要性及具體步驟,以提升識(shí)別準(zhǔn)確率。隨后提供完整代碼,按圖片預(yù)處理、OCR識(shí)別、結(jié)果保存、命令行交互模塊逐段詳解,并給出多場(chǎng)景使用教程。同時(shí),針對(duì)常見報(bào)錯(cuò)(如找不到圖片、Tesseract路徑問題、中文語言包缺失)提供了具體排查和解決方法,幫助用戶順利實(shí)現(xiàn)中英文圖片的文字識(shí)別與結(jié)果保存。

在日常工作和學(xué)習(xí)中,我們經(jīng)常會(huì)遇到需要將圖片中的文字提取出來的場(chǎng)景(如掃描件、截圖文字提?。?,手動(dòng)輸入不僅效率低還容易出錯(cuò)。OCR(Optical Character Recognition,光學(xué)字符識(shí)別)技術(shù)可以幫我們快速解決這個(gè)問題。本文將帶大家從零開始,使用 Python 的 pytesseract 庫開發(fā)一個(gè)簡(jiǎn)易但實(shí)用的 OCR 識(shí)別工具,支持圖片文字提取、多語言識(shí)別(中英文),并提供基礎(chǔ)的圖片預(yù)處理功能以提升識(shí)別準(zhǔn)確率。

一、工具核心技術(shù)棧

在開始前,我們先明確實(shí)現(xiàn)這個(gè) OCR 工具需要用到的技術(shù)和庫,確保大家理解每個(gè)組件的作用:

庫/工具作用說明
pytesseractPython 封裝的 Tesseract OCR 引擎接口,是實(shí)現(xiàn)文字識(shí)別的核心庫
Tesseract OCR EngineGoogle 開源的 OCR 引擎(pytesseract 依賴此引擎才能運(yùn)行)
OpenCV-Python用于圖片預(yù)處理(如灰度化、二值化、降噪),提升 OCR 識(shí)別準(zhǔn)確率
Pillow (PIL)輕量級(jí)圖片處理庫,用于讀取圖片文件、轉(zhuǎn)換圖片格式(與 OpenCV 互補(bǔ)使用)
argparsePython 內(nèi)置庫,用于解析命令行參數(shù)(支持通過命令行傳入圖片路徑、語言等)

二、環(huán)境搭建(關(guān)鍵步驟)

pytesseract 不是純 Python 庫,它需要依賴底層的 Tesseract OCR 引擎,因此環(huán)境搭建分為 “引擎安裝”“Python 庫安裝” 兩步,缺一不可。

2.1 安裝 Tesseract OCR 引擎

根據(jù)你的操作系統(tǒng)選擇對(duì)應(yīng)的安裝方式,務(wù)必記住安裝路徑(后續(xù)配置需要用到):

(1)Windows 系統(tǒng)

下載安裝包:訪問 Tesseract 官方 GitHub Releases,下載最新的 Windows 安裝包(如 tesseract-ocr-w64-setup-v5.3.3.20231005.exe)。

運(yùn)行安裝:

  • 點(diǎn)擊“Next”直到“Choose Components”頁面,勾選“Additional language data (download)”(默認(rèn)只安裝英文,勾選后會(huì)下載中文等其他語言包)。
  • 記住安裝路徑(如 C:\Program Files\Tesseract-OCR),后續(xù)需要配置環(huán)境變量或在代碼中指定路徑。

配置環(huán)境變量(可選但推薦):

  • 右鍵“此電腦”→“屬性”→“高級(jí)系統(tǒng)設(shè)置”→“環(huán)境變量”。
  • 在“系統(tǒng)變量”的“Path”中添加 Tesseract 安裝路徑(如 C:\Program Files\Tesseract-OCR)。

驗(yàn)證:打開 cmd,輸入 tesseract --version,若顯示版本信息則安裝成功。

(2)macOS 系統(tǒng)

通過 Homebrew 安裝(需先安裝 Homebrew):

# 安裝 Tesseract 引擎(默認(rèn)包含英文)
brew install tesseract
# 安裝中文語言包(如需識(shí)別中文)
brew install tesseract-lang

(3)Linux 系統(tǒng)(以 Ubuntu 為例)

# 安裝 Tesseract 引擎
sudo apt-get install tesseract-ocr
# 安裝中文語言包
sudo apt-get install tesseract-ocr-chi-sim  # 簡(jiǎn)體中文
sudo apt-get install tesseract-ocr-chi-tra  # 繁體中文

2.2 安裝 Python 依賴庫

打開終端/命令行,執(zhí)行以下命令安裝所需的 Python 庫:

pip install pytesseract opencv-python pillow argparse
  • pytesseract:Python 操作 Tesseract 引擎的接口。
  • opencv-python:圖片預(yù)處理核心庫。
  • pillow:輔助讀取和處理圖片。
  • argparse:解析命令行參數(shù)(內(nèi)置庫,安裝其他庫時(shí)會(huì)自動(dòng)兼容)。

三、核心原理:為什么需要圖片預(yù)處理?

Tesseract OCR 引擎對(duì) 清晰、無噪音、高對(duì)比度 的圖片識(shí)別準(zhǔn)確率最高。如果直接識(shí)別帶有背景噪音、傾斜或彩色的圖片,很容易出現(xiàn)識(shí)別錯(cuò)誤。因此,我們需要在識(shí)別前對(duì)圖片進(jìn)行預(yù)處理,常見步驟包括:

  1. 灰度化:將彩色 圖片轉(zhuǎn)為黑白灰度圖,減少顏色通道干擾(OCR 對(duì)灰度圖更敏感)。
  2. 二值化:將灰度圖轉(zhuǎn)為純黑白圖(只有 0 和 255 兩個(gè)像素值),進(jìn)一步提升文字與背景的對(duì)比度。
  3. 降噪:去除圖片中的斑點(diǎn)、雜色等噪音(如掃描件的黑點(diǎn)、截圖的陰影)。
  4. 傾斜矯正:若圖片傾斜(如拍攝的文檔),通過旋轉(zhuǎn)矯正為水平方向(本文簡(jiǎn)化版暫不實(shí)現(xiàn),后續(xù)可擴(kuò)展)。

通過預(yù)處理,能顯著提升 OCR 識(shí)別的準(zhǔn)確率,這是從“能用”到“好用”的關(guān)鍵步驟。

四、完整代碼實(shí)現(xiàn)與詳細(xì)解釋

我們將工具分為 3 個(gè)核心模塊:圖片預(yù)處理模塊、OCR 識(shí)別模塊、命令行交互模塊,代碼結(jié)構(gòu)清晰,便于后續(xù)擴(kuò)展。

4.1 完整代碼

創(chuàng)建一個(gè)名為 simple_ocr_tool.py 的文件,復(fù)制以下代碼:

# 導(dǎo)入所需庫
import pytesseract
import cv2
from PIL import Image
import argparse
import os

def image_preprocessing(image_path):
    """
    圖片預(yù)處理函數(shù):灰度化 → 二值化 → 降噪
    :param image_path: 輸入圖片路徑(相對(duì)/絕對(duì)路徑)
    :return: 預(yù)處理后的圖片對(duì)象(OpenCV 格式,便于后續(xù)識(shí)別)
    """
    # 1. 讀取圖片(使用 OpenCV,默認(rèn)讀取為 BGR 格式)
    img = cv2.imread(image_path)
    if img is None:
        raise FileNotFoundError(f"錯(cuò)誤:未找到圖片文件 {image_path},請(qǐng)檢查路徑是否正確。")
    
    # 2. 灰度化:將 BGR 格式轉(zhuǎn)為灰度圖(單通道)
    gray_img = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
    print("? 圖片灰度化完成")
    
    # 3. 二值化:使用 Otsu 閾值法(自動(dòng)計(jì)算最佳閾值,適合對(duì)比度明顯的圖片)
    # cv2.THRESH_BINARY_INV:黑白反轉(zhuǎn)(文字為白,背景為黑,提升識(shí)別率)
    # cv2.THRESH_OTSU:自動(dòng)閾值,無需手動(dòng)調(diào)整
    _, binary_img = cv2.threshold(
        gray_img, 
        0, 
        255, 
        cv2.THRESH_BINARY_INV + cv2.THRESH_OTSU
    )
    print("? 圖片二值化完成")
    
    # 4. 降噪:使用高斯模糊去除小噪音(核大小 (3,3) 為經(jīng)驗(yàn)值,可根據(jù)圖片調(diào)整)
    denoised_img = cv2.GaussianBlur(binary_img, (3, 3), 0)
    print("? 圖片降噪完成")
    
    return denoised_img

def ocr_recognize(preprocessed_img, lang='eng', tesseract_cmd=None):
    """
    OCR 識(shí)別函數(shù):將預(yù)處理后的圖片轉(zhuǎn)為文字
    :param preprocessed_img: 預(yù)處理后的圖片(OpenCV 格式)
    :param lang: 識(shí)別語言(默認(rèn) 'eng' 英文,中文用 'chi_sim',中英文混合用 'chi_sim+eng')
    :param tesseract_cmd: Tesseract 引擎路徑(Windows 若未配置環(huán)境變量需指定)
    :return: 識(shí)別出的文字字符串
    """
    # 1. 配置 Tesseract 引擎路徑(僅 Windows 非環(huán)境變量配置時(shí)需要)
    if tesseract_cmd:
        pytesseract.pytesseract.tesseract_cmd = tesseract_cmd
    
    # 2. 將 OpenCV 格式圖片(numpy array)轉(zhuǎn)為 PIL 格式(pytesseract 更兼容)
    pil_img = Image.fromarray(preprocessed_img)
    
    # 3. 調(diào)用 Tesseract 進(jìn)行識(shí)別
    # config 參數(shù):--psm 6 表示將圖片視為單一文本塊(適合大部分場(chǎng)景)
    custom_config = r'--oem 3 --psm 6'  # oem 3 表示使用默認(rèn) OCR 引擎
    text = pytesseract.image_to_string(pil_img, lang=lang, config=custom_config)
    
    # 4. 清理識(shí)別結(jié)果(去除空行、多余空格)
    cleaned_text = '\n'.join([line.strip() for line in text.split('\n') if line.strip()])
    
    print(f"? OCR 識(shí)別完成(語言:{lang})")
    return cleaned_text

def save_result(text, output_path='ocr_result.txt'):
    """
    結(jié)果保存函數(shù):將識(shí)別出的文字保存到本地文件
    :param text: 識(shí)別出的文字
    :param output_path: 輸出文件路徑(默認(rèn)當(dāng)前目錄 ocr_result.txt)
    """
    with open(output_path, 'w', encoding='utf-8') as f:
        f.write(text)
    print(f"? 識(shí)別結(jié)果已保存到:{os.path.abspath(output_path)}")

def main():
    """
    主函數(shù):解析命令行參數(shù) → 調(diào)用預(yù)處理 → 調(diào)用 OCR 識(shí)別 → 保存結(jié)果
    """
    # 1. 解析命令行參數(shù)(讓用戶通過命令行傳入?yún)?shù),更靈活)
    parser = argparse.ArgumentParser(description="Python 簡(jiǎn)易 OCR 識(shí)別工具(基于 pytesseract)")
    
    # 必選參數(shù):圖片路徑
    parser.add_argument(
        '--image', '-i', 
        required=True, 
        help='輸入圖片路徑(如:./test.png 或 C:\\images\\doc.jpg)'
    )
    
    # 可選參數(shù):識(shí)別語言(默認(rèn)英文,中文用 chi_sim,中英文混合用 chi_sim+eng)
    parser.add_argument(
        '--lang', '-l', 
        default='eng', 
        help='識(shí)別語言(默認(rèn) eng 英文,中文 chi_sim,中英文混合 chi_sim+eng)'
    )
    
    # 可選參數(shù):Tesseract 引擎路徑(Windows 未配置環(huán)境變量時(shí)需指定)
    parser.add_argument(
        '--tesseract-cmd', '-t', 
        default=None, 
        help='Tesseract 引擎路徑(如 Windows:C:\\Program Files\\Tesseract-OCR\\tesseract.exe)'
    )
    
    # 可選參數(shù):輸出文件路徑(默認(rèn)當(dāng)前目錄 ocr_result.txt)
    parser.add_argument(
        '--output', '-o', 
        default='ocr_result.txt', 
        help='識(shí)別結(jié)果輸出文件路徑(默認(rèn) ocr_result.txt)'
    )
    
    # 解析參數(shù)
    args = parser.parse_args()
    
    try:
        # 2. 圖片預(yù)處理
        print(f"?? 正在讀取圖片:{args.image}")
        preprocessed_img = image_preprocessing(args.image)
        
        # 3. OCR 識(shí)別
        print("?? 正在進(jìn)行 OCR 識(shí)別...")
        recognized_text = ocr_recognize(
            preprocessed_img=preprocessed_img,
            lang=args.lang,
            tesseract_cmd=args.tesseract_cmd
        )
        
        # 4. 打印識(shí)別結(jié)果
        print("\n" + "="*50)
        print("?? OCR 識(shí)別結(jié)果:")
        print("="*50)
        print(recognized_text)
        print("="*50 + "\n")
        
        # 5. 保存結(jié)果
        save_result(recognized_text, args.output)
        
    except Exception as e:
        # 異常處理(如文件不存在、語言包缺失等)
        print(f"? 程序運(yùn)行出錯(cuò):{str(e)}")

# 程序入口(只有直接運(yùn)行腳本時(shí)才執(zhí)行 main 函數(shù))
if __name__ == "__main__":
    main()

4.2 運(yùn)行效果

原圖:

解析后:

4.3 代碼逐模塊詳解

(1)圖片預(yù)處理模塊 image_preprocessing

該函數(shù)是提升識(shí)別準(zhǔn)確率的核心,步驟拆解:

  1. 讀取圖片:用 cv2.imread() 讀取圖片,返回 OpenCV 格式(numpy 數(shù)組,BGR 顏色通道);若圖片路徑錯(cuò)誤,拋出 FileNotFoundError 并提示用戶。
  2. 灰度化:用 cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) 將彩色 圖轉(zhuǎn)為灰度圖(單通道),減少顏色干擾。
  3. 二值化:用 cv2.threshold() 實(shí)現(xiàn)自動(dòng)閾值二值化:
    • THRESH_BINARY_INV:黑白反轉(zhuǎn)(文字變白、背景變黑),因?yàn)?Tesseract 對(duì)白色文字更敏感。
    • THRESH_OTSU:自動(dòng)計(jì)算最佳閾值(無需手動(dòng)調(diào)整,適合不同亮度的圖片)。
  4. 降噪:用 cv2.GaussianBlur() 進(jìn)行高斯模糊,核大小 (3,3) 是經(jīng)驗(yàn)值(可根據(jù)圖片噪音程度調(diào)整為 (5,5))。

(2)OCR 識(shí)別模塊 ocr_recognize

該函數(shù)負(fù)責(zé)調(diào)用 Tesseract 引擎提取文字:

  1. 配置引擎路徑:Windows 若未配置環(huán)境變量,需通過 tesseract_cmd 參數(shù)指定 Tesseract 可執(zhí)行文件路徑(如 C:\Program Files\Tesseract-OCR\tesseract.exe)。
  2. 格式轉(zhuǎn)換pytesseract 對(duì) PIL 格式圖片兼容性更好,因此用 Image.fromarray() 將 OpenCV 格式(numpy 數(shù)組)轉(zhuǎn)為 PIL 格式。
  3. 核心識(shí)別pytesseract.image_to_string() 是核心接口,參數(shù)說明:
    • lang:識(shí)別語言(eng 英文、chi_sim 簡(jiǎn)體中文、chi_sim+eng 中英文混合)。
    • config:額外配置,--psm 6 表示將圖片視為“單一文本塊”(適合大部分場(chǎng)景,如截圖、文檔掃描件);--oem 3 表示使用默認(rèn) OCR 引擎。
  4. 結(jié)果清理:用列表推導(dǎo)式去除識(shí)別結(jié)果中的空行和多余空格,讓輸出更整潔。

(3)結(jié)果保存模塊 save_result

open() 函數(shù)以 UTF-8 編碼(避免中文亂碼)將識(shí)別結(jié)果寫入文件,并用 os.path.abspath() 輸出文件絕對(duì)路徑,方便用戶查找。

(4)主函數(shù) main 與命令行參數(shù)

  • 參數(shù)解析:用 argparse 定義 4 個(gè)參數(shù)(圖片路徑、語言、引擎路徑、輸出路徑),其中 --image 是必選參數(shù),其他為可選參數(shù),降低用戶使用門檻。
  • 流程控制:按“讀取圖片 → 預(yù)處理 → 識(shí)別 → 打印結(jié)果 → 保存結(jié)果”的流程執(zhí)行,并通過 try-except 捕獲異常(如文件不存在、語言包缺失),提升程序穩(wěn)定性。

五、工具使用教程(實(shí)戰(zhàn)演示)

我們以 Windows 系統(tǒng)為例,通過 3 個(gè)場(chǎng)景演示工具的使用(其他系統(tǒng)操作類似,僅路徑格式不同)。

5.1 準(zhǔn)備測(cè)試圖片

首先準(zhǔn)備 2 張測(cè)試圖片(建議放在與 simple_ocr_tool.py 同一目錄下):

  1. english_test.png:英文截圖(如一段英文文檔)。
  2. chinese_test.png:中文截圖(如一段中文新聞)。

5.2 場(chǎng)景 1:識(shí)別英文圖片

打開終端/命令行,切換到腳本所在目錄,執(zhí)行以下命令:

# 識(shí)別英文圖片,默認(rèn)輸出到 ocr_result.txt
python simple_ocr_tool.py -i english_test.png -l eng

執(zhí)行流程與輸出:

  1. 程序會(huì)依次打印“灰度化 → 二值化 → 降噪”完成提示。
  2. 輸出識(shí)別結(jié)果(在終端顯示)。
  3. 保存結(jié)果到當(dāng)前目錄的 ocr_result.txt,并顯示文件絕對(duì)路徑。

5.3 場(chǎng)景 2:識(shí)別中文圖片

若需識(shí)別中文,需確保已安裝中文語言包(安裝 Tesseract 時(shí)勾選了語言包),執(zhí)行命令:

# 識(shí)別中文圖片,輸出到 chinese_result.txt
python simple_ocr_tool.py -i chinese_test.png -l chi_sim -o chinese_result.txt

注意:

  • 語言參數(shù) lang 必須為 chi_sim(簡(jiǎn)體中文)或 chi_tra(繁體中文),不可寫錯(cuò)。
  • 若提示“語言包缺失”,需重新安裝 Tesseract 并勾選中文語言包(Windows)或執(zhí)行 brew install tesseract-lang(macOS)。

5.4 場(chǎng)景 3:Windows 未配置環(huán)境變量時(shí)使用(補(bǔ)充完整)

若未配置 Tesseract 環(huán)境變量,程序無法自動(dòng)找到引擎路徑,需通過 --tesseract-cmd(或簡(jiǎn)寫 -t)參數(shù)手動(dòng)指定 Tesseract 可執(zhí)行文件的完整路徑,避免出現(xiàn)“tesseract is not installed or it’s not in your PATH”錯(cuò)誤。

以識(shí)別中英文混合圖片 mix_test.png 為例,完整命令如下(需替換為你的實(shí)際安裝路徑):

# Windows 系統(tǒng)命令(路徑含空格需用英文引號(hào)包裹)
python simple_ocr_tool.py -i mix_test.png -l chi_sim+eng -t "C:\Program Files\Tesseract-OCR\tesseract.exe" -o mix_result.txt
  • 參數(shù)說明
    • -t "C:\Program Files\Tesseract-OCR\tesseract.exe":明確指定 Tesseract 引擎的 tesseract.exe 文件路徑,路徑中的英文引號(hào)用于處理“Program Files”中的空格(若路徑無空格可省略引號(hào),如 D:\Tesseract-OCR\tesseract.exe)。
    • -l chi_sim+eng:語言參數(shù)設(shè)為“簡(jiǎn)體中文+英文”,支持同時(shí)識(shí)別圖片中的中英文內(nèi)容(語言包需同時(shí)安裝 chi_sim.traineddataeng.traineddata)。
    • -o mix_result.txt:將識(shí)別結(jié)果保存到 mix_result.txt,避免覆蓋默認(rèn)的 ocr_result.txt

執(zhí)行命令后,程序會(huì)按“圖片讀取→預(yù)處理→OCR識(shí)別→結(jié)果保存”流程運(yùn)行,終端會(huì)打印各步驟進(jìn)度(如“? 圖片降噪完成”“? OCR 識(shí)別完成(語言:chi_sim+eng)”),最終在指定路徑生成結(jié)果文件。

六、常見問題與優(yōu)化方向

6.1 識(shí)別準(zhǔn)確率低?試試這些優(yōu)化

若識(shí)別結(jié)果存在較多錯(cuò)字、漏字,可從以下角度優(yōu)化:

  1. 增強(qiáng)圖片預(yù)處理
    • 若圖片傾斜,添加“傾斜矯正”步驟(使用 cv2.minAreaRect() 計(jì)算傾斜角度,cv2.warpAffine() 實(shí)現(xiàn)旋轉(zhuǎn))。
    • 若文字較細(xì)或有斷裂,使用“形態(tài)學(xué)膨脹”(cv2.dilate())增強(qiáng)文字輪廓。
  2. 調(diào)整 Tesseract 配置參數(shù)
    • 修改 custom_config 中的 --psm 參數(shù)(頁面分割模式),例如:
      • --psm 11:適合文字分布不規(guī)則的圖片(如截圖中的散字)。
      • --psm 3:默認(rèn)模式,適合多列文本的文檔(如PDF掃描件)。
    • 添加降噪?yún)?shù):--oem 3 --psm 6 -c tessedit_char_whitelist=0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ中文,限定識(shí)別字符范圍(減少無關(guān)字符干擾)。
  3. 提升圖片質(zhì)量
    • 確保圖片分辨率不低于 300 DPI(掃描件優(yōu)先選擇“高清模式”)。
    • 避免圖片有模糊、陰影或反光(拍攝時(shí)盡量平整、光線均勻)。

6.2 擴(kuò)展功能:支持批量識(shí)別圖片

若需要批量處理多個(gè)圖片,可在代碼中添加“遍歷文件夾”功能,修改 main 函數(shù)中的圖片讀取邏輯:

# 批量識(shí)別指定文件夾下的所有圖片(示例:支持 png/jpg/jpeg 格式)
def batch_ocr(folder_path, lang='chi_sim', output_dir='ocr_batch_results'):
    # 創(chuàng)建輸出文件夾
    os.makedirs(output_dir, exist_ok=True)
    # 遍歷文件夾中的圖片
    for filename in os.listdir(folder_path):
        if filename.lower().endswith(('.png', '.jpg', '.jpeg')):
            image_path = os.path.join(folder_path, filename)
            print(f"\n?? 正在處理圖片:{filename}")
            try:
                # 預(yù)處理 + 識(shí)別
                preprocessed_img = image_preprocessing(image_path)
                recognized_text = ocr_recognize(preprocessed_img, lang=lang)
                # 保存結(jié)果(以圖片名命名結(jié)果文件)
                output_path = os.path.join(output_dir, f"{os.path.splitext(filename)[0]}.txt")
                save_result(recognized_text, output_path)
            except Exception as e:
                print(f"? 處理 {filename} 失?。簕str(e)}")

使用時(shí)只需在 main 函數(shù)中調(diào)用 batch_ocr(r'C:\your_image_folder'),即可批量處理文件夾下所有圖片并生成對(duì)應(yīng)結(jié)果文件。

6.3 打包為可執(zhí)行文件(方便非編程用戶使用)

若需將工具分享給不懂Python的用戶,可使用 pyinstaller 打包為 .exe 文件(Windows):

  1. 安裝打包工具:pip install pyinstaller
  2. 執(zhí)行打包命令(在腳本所在目錄):
pyinstaller -F -i ocr_icon.ico simple_ocr_tool.py
  • -F:打包為單個(gè)可執(zhí)行文件(方便攜帶)。
  • -i ocr_icon.ico:可選參數(shù),為.exe文件添加圖標(biāo)(需提前準(zhǔn)備.ico格式圖標(biāo)文件)。
  1. 打包完成后,可執(zhí)行文件會(huì)生成在 dist 文件夾中,用戶雙擊運(yùn)行后,通過命令行參數(shù)即可使用(操作同之前的命令)。

七、總結(jié)

本文從零開始構(gòu)建了一個(gè)基于 pytesseract 的簡(jiǎn)易 OCR 工具,核心亮點(diǎn)包括:

  1. 實(shí)用性:支持中英文識(shí)別、結(jié)果保存,解決日常圖片文字提取需求。
  2. 可擴(kuò)展性:代碼模塊化設(shè)計(jì),可輕松添加批量識(shí)別、傾斜矯正、GUI界面(如用 tkinterPyQt)等功能。
  3. 問題導(dǎo)向:針對(duì)環(huán)境配置、路徑錯(cuò)誤、語言包缺失等常見問題提供了詳細(xì)解決方案,降低使用門檻。

通過本實(shí)戰(zhàn),不僅能掌握 OCR 工具的開發(fā)流程,還能理解圖片預(yù)處理對(duì)識(shí)別準(zhǔn)確率的影響,為后續(xù)更復(fù)雜的計(jì)算機(jī)視覺任務(wù)(如表格識(shí)別、驗(yàn)證碼識(shí)別)打下基礎(chǔ)。

以上就是使用Python的pytesseract庫開發(fā)簡(jiǎn)易OCR圖片文字識(shí)別工具的詳細(xì)內(nèi)容,更多關(guān)于Python OCR圖片文字識(shí)別的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • Python超簡(jiǎn)單容易上手的畫圖工具庫(適合新手)

    Python超簡(jiǎn)單容易上手的畫圖工具庫(適合新手)

    這篇文章主要給大家介紹了關(guān)于Python超簡(jiǎn)單容易上手的畫圖工具庫的相關(guān)資料,文中通過圖文介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-05-05
  • selenium框架中driver.close()和driver.quit()關(guān)閉瀏覽器

    selenium框架中driver.close()和driver.quit()關(guān)閉瀏覽器

    這篇文章主要介紹了selenium框架中driver.close()和driver.quit()關(guān)閉瀏覽器,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-12-12
  • Python實(shí)現(xiàn)HTML文件或字符串轉(zhuǎn)換為純文本TXT

    Python實(shí)現(xiàn)HTML文件或字符串轉(zhuǎn)換為純文本TXT

    在數(shù)據(jù)處理、內(nèi)容提取、網(wǎng)頁歸檔等任務(wù)中,經(jīng)常需要將 HTML 轉(zhuǎn)換為純文本 TXT,本文將介紹如何用 Python 和 Free Spire.Doc 庫完成 HTML 到 TXT 的轉(zhuǎn)換,希望對(duì)大家有所幫助
    2025-09-09
  • Python 實(shí)現(xiàn)遙感影像波段組合的示例代碼

    Python 實(shí)現(xiàn)遙感影像波段組合的示例代碼

    這篇文章主要介紹了Python 實(shí)現(xiàn)遙感影像波段組合的示例代碼,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-08-08
  • numpy中nan_to_num的具體使用

    numpy中nan_to_num的具體使用

    在Numpy中NaN值一般出現(xiàn)在數(shù)據(jù)清洗前,出現(xiàn)這個(gè)值說明這個(gè)數(shù)據(jù)是缺失的,本文主要介紹了numpy中nan_to_num的具體使用,感興趣的可以了解一下
    2022-08-08
  • pandas使用函數(shù)批量處理數(shù)據(jù)(map、apply、applymap)

    pandas使用函數(shù)批量處理數(shù)據(jù)(map、apply、applymap)

    這篇文章主要介紹了pandas使用函數(shù)批量處理數(shù)據(jù)(map、apply、applymap),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-11-11
  • Python利用OpenCV和skimage實(shí)現(xiàn)圖像邊緣檢測(cè)

    Python利用OpenCV和skimage實(shí)現(xiàn)圖像邊緣檢測(cè)

    提取圖片的邊緣信息是底層數(shù)字圖像處理的基本任務(wù)之一。本文將通過OpenCV和skimage的?Canny?算法實(shí)現(xiàn)圖像邊緣檢測(cè),感興趣的可以了解一下
    2022-12-12
  • Python使用PyMySql增刪改查Mysql數(shù)據(jù)庫的實(shí)現(xiàn)

    Python使用PyMySql增刪改查Mysql數(shù)據(jù)庫的實(shí)現(xiàn)

    PyMysql是Python中用于連接MySQL數(shù)據(jù)庫的一個(gè)第三方庫,本文主要介紹了Python使用PyMySql增刪改查Mysql數(shù)據(jù)庫的實(shí)現(xiàn),具有一定的參考價(jià)值,感興趣的可以了解一下
    2024-01-01
  • Django視圖與URLs路由的使用方式

    Django視圖與URLs路由的使用方式

    這篇文章主要介紹了Django視圖與URLs路由的使用方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2025-05-05
  • Python迷宮生成和迷宮破解算法實(shí)例

    Python迷宮生成和迷宮破解算法實(shí)例

    今天小編就為大家分享一篇Python迷宮生成和迷宮破解算法實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2019-12-12

最新評(píng)論