使用 pytesseract 構建一個簡單 OCR demo

簡介

pytesseract 庫是 Google Tesseract OCR (光學字符識別)引擎的一個 Python 封裝庫,使用廣泛且功能強大。

構建

使用 pytesseract 構建一個簡單 OCR demo。
步驟一:安裝必要的庫
您需要在您的 Python 環境中安裝 pytesseract、Pillow (用于圖像處理) 和 OpenCV (雖然不是必需的,但在處理圖像時非常有用)。
打開終端或命令提示符,運行以下命令:

pip install pytesseract Pillow opencv-python

步驟二:安裝 Tesseract OCR 引擎
pytesseract 只是一個 Python 接口,它需要后臺安裝的 Tesseract OCR 引擎才能工作。Tesseract 的安裝方法因操作系統而異:
Windows: 您可以從 Tesseract 官方 GitHub release 頁面 下載安裝程序。安裝時請記住安裝路徑,之后可能需要在代碼中指定 Tesseract 的可執行文件路徑。
macOS: 使用 Homebrew 進行安裝:

    brew install tesseract

中文識別 :如果您需要識別中文,請確保:

  • 已通過 brew install tesseract-lang 安裝了中文字體數據。
  • 在調用 image_to_string 時使用 lang=‘chi_sim’ (簡體中文) 或 lang=‘chi_tra’ (繁體中文)。

Linux (Ubuntu/Debian): 使用 apt-get 進行安裝:

    sudo apt-get install tesseract-ocrsudo apt-get install libtesseract-dev

步驟三:編寫 Python 代碼
創建一個 Python 文件 (例如 simple_ocr.py) 并粘貼以下代碼。

import pytesseract
from PIL import Image
import cv2
import os # 獲取當前腳本文件的絕對路徑
script_path = os.path.abspath(__file__)
# 獲取腳本文件所在的目錄
script_dir = os.path.dirname(script_path)# 如果您是Windows用戶,并且Tesseract沒有添加到系統環境變量中。
# tesseract_cmd_path = r'C:\Program Files\Tesseract-OCR\tesseract.exe' # windows
tesseract_cmd_path = r'/opt/homebrew/bin/tesseract' # macOS/Linux 查詢命令:which tesseract # Check if the tesseract executable exists at the specified path
if not os.path.exists(tesseract_cmd_path):print(f"Error: Tesseract executable not found at {tesseract_cmd_path}")print("Please update 'tesseract_cmd_path' in the script to your Tesseract installation path.")
else:pytesseract.pytesseract.tesseract_cmd = tesseract_cmd_path# 指定您要進行OCR的圖片文件路徑
image_path = 'test_image.png' # 請替換為您的圖片文件路徑
image_path = os.path.join(script_dir, image_path)
# Check if the image file exists
if not os.path.exists(image_path):print(f"Error: Image file not found at {image_path}")print("Please make sure the image file exists and the path is correct.")
else:try:# 使用 Pillow 加載圖片# img = Image.open(image_path)# 或者使用 OpenCV 加載圖片,方便后續圖像處理img_cv = cv2.imread(image_path)# 如果使用 OpenCV 加載,需要轉換為 PIL Image 對象或直接傳給 image_to_string (cv2.imread returns numpy array)# pytesseract.image_to_string 可以接受 PIL Image 對象或 numpy array# 我們這里直接使用 numpy arrayimg_np = cv2.cvtColor(img_cv, cv2.COLOR_BGR2RGB) # OpenCV讀取是BGR格式,Tesseract通常處理RGB# 使用 pytesseract.image_to_string 進行文字識別# lang 參數可以指定語言,例如 'eng' 表示英語,'chi_sim' 表示簡體中文# 您需要安裝對應語言的 Tesseract 語言包, macOS/Linux: brew install tesseract-langtext = pytesseract.image_to_string(img_np, lang='chi_sim') # 或者 lang='eng' for English# 打印識別結果print("---- 識別結果 ----")print(text)print("----------------")

步驟四:準備測試圖片
創建一個名為 test_image.png 的圖片文件,其中包含一些您想要識別的文字,并將其放在與 Python 腳本相同的目錄下。
在這里插入圖片描述

步驟五:運行代碼
在終端或命令提示符中,導航到保存 simple_ocr.py 文件的目錄,然后運行:

python simple_ocr.py

如果一切順利,您將在控制臺中看到從圖片中識別出的文字。
在這里插入圖片描述

注意事項:

Tesseract 安裝路徑:

  • 如果您在 Windows 上運行,請務必將 tesseract_cmd_path 變量的值修改為您系統中 tesseract.exe 的實際安裝路徑。
  • 在 macOS 或 Linux 上,如果 Tesseract 已通過包管理器安裝并添加到 PATH 中,代碼中的默認路徑通常是正確的,或者您也可以嘗試注釋掉設置 pytesseract.pytesseract.tesseract_cmd 的那一行,讓 pytesseract 自己去尋找。

語言包:

  • 如果您需要識別非英文字符(例如中文),您還需要安裝對應的 Tesseract 語言包,并在 pytesseract.image_to_string 函數中指定 lang 參數,例如 lang=‘chi_sim’。
  • 語言包的安裝通常是將對應的 .traineddata 文件放到 Tesseract 安裝目錄下的 tessdata 文件夾中。

圖片質量:

  • OCR 識別效果很大程度上取決于輸入圖片的質量。清晰、高對比度、文字方向正確的圖片更容易識別。
  • 對于有噪聲或扭曲的圖片,您可能需要使用 OpenCV 等庫進行預處理(如二值化、去噪、旋轉矯正)來提高識別率。代碼中也提供了加載圖片并進行顏色空間轉換的部分,為可能的預處理留下了空間。

進一步探索 pytesseract 的其他功能

  • 例如 image_to_data 獲取文字位置信息、image_to_boxes 獲取字符邊界框等,以便構建更復雜的 OCR 應用。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/bicheng/82965.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/82965.shtml
英文地址,請注明出處:http://en.pswp.cn/bicheng/82965.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

十三: 神經網絡的學習

這里所說的“學習”是指從訓練數據中自動獲取最優權重參數的過程。為了使神經網絡能進行學習,將導入損失函數這一指標。而學習的目的就是以該損失函數為基準,找出能使它的值達到最小的權重參數。為了找出盡可能小的損失函數的值,我們將介紹利…

AWS 創建VPC 并且添加權限控制

AWS 創建VPC 并且添加權限控制 以下是完整的從0到1在AWS中創建VPC并配置權限的步驟(包含網絡配置、安全組權限和實例訪問): 1. 創建VPC 步驟: 登錄AWS控制臺 訪問 AWS VPC控制臺,點擊 創建VPC。 配置基礎信息 名稱…

ICASSP2025丨融合語音停頓信息與語言模型的阿爾茲海默病檢測

阿爾茲海默病(Alzheimers Disease, AD)是一種以認知能力下降和記憶喪失為特征的漸進性神經退行性疾病,及早發現對于其干預和治療至關重要。近期,清華大學語音與音頻技術實驗室(SATLab)提出了一種將停頓信息…

C# 導出word 插入公式問題

最近遇到了一個問題,下載一個文檔時需要下載word可編輯的公式。找了很久終于找到了一種解決辦法。下面是以C#代碼來實現在Word中插入公式的功能。 目錄 一、引入dll程序集文件1、通過 NuGet 引入dll(2種方法)的方法:2、手動添加d…

智匯云舟攜最新無人機2D地圖快速重建技術亮相廣西國際礦業展覽會

5月22至25日,廣西國際礦業展覽會(以下簡稱 “礦業展”)在南寧國際會展中心成功舉辦。智匯云舟與合作伙伴廣西空馭數智信息技術有限公司攜無人機 2D地圖快速重建技術,以及視頻孿生智慧礦山解決方案參會,為礦山行業數字化…

OpenSSL 簽名驗證詳解:PKCS7* p7、cafile 與 RSA 驗簽實現

OpenSSL 簽名驗證詳解:PKCS7* p7、cafile 與 RSA 驗簽實現 摘要 本文深入剖析 OpenSSL 中 PKCS7* p7 數據結構和 cafile 的作用及相互關系,詳細講解基于 OpenSSL 的 RSA 驗簽字符串的 C 語言實現,涵蓋簽名解析、證書加載、驗證流程及關鍵要…

9:OpenCV—模板匹配

模版匹配 1、模板匹配概念 模板匹配是一項在一副圖像中尋找與另一幅模板圖像最匹配(相似)部分的技術。模板匹配不是基于直方圖的,而是通過在輸入圖像上滑動圖像塊(模板)同時對比相似度,來對模板和輸入圖像…

Composer 常規操作說明與問題處理

目錄 一、 Composer 簡介,安裝二、全局配置三、項目配置(composer.json)3.1 composer.json 文件1. 基礎字段信息2. **require(生產環境依賴)**3. **require-dev(開發環境依賴)** 3.2 composer.l…

Spring Boot 3.0與Java 17:企業級應用開發的新范式

引言 隨著Spring Boot 3.0和Java 17的正式發布,企業級應用開發迎來了新的技術范式。這兩項技術的結合不僅帶來了性能提升,還引入了眾多現代化的編程特性,為開發者提供了更強大、更高效的開發體驗。本文將深入探討Spring Boot 3.0與Java 17的…

Vue 組件 - 指令

Vue 漸進式JavaScript 框架 基于Vue2的學習筆記 - Vue指令 目錄 指令寫法 自定義指令 簡單封裝指令 指令傳遞字符串 update事件 指令應用 指令實現輪播 指令函數簡寫 指令函數列表 bind inserted update componentUpdated unbind Vue3指令輪播 nextick 總結 指…

5.28 后端面經

為什么golang在并發環境下更有優勢 Go語言(Golang)在并發環境下的優勢主要源自其設計哲學和內置的并發機制,這些機制在語言層面提供了高效、簡潔且安全的并發編程工具。以下是其核心優勢的詳細分析: 1. Goroutine:輕量…

Linux線程入門

目錄 Linux線程概念 什么是線程 重新理解進程 線程的優點 線程的缺點 線程的異常 線程用途 Linux線程概念 什么是線程 在一個程序里的一個執行路線就叫做線程(thread)。更準確的定義是:線程是“一個進程內部的控制序列”。一切進程至…

通信應用高速模數轉換器ADC

在5G通信、醫療成像、航空航天及工業自動化等關鍵領域,高速ADC模數轉換器作為信號鏈的“心臟”,其性能直接決定了系統的精度與效率。然而,如何精確測試高速ADC的動態參數、優化設計驗證流程、應對復雜應用場景的挑戰,始終是工程師…

PostgreSQL 中 JSONB 數據類型的深度解析以及如何使用

一、JSONB 核心特性解析 1. 存儲結構與優勢 ??二進制存儲??:將 JSON 數據解析為二進制格式(分解鍵值對,去除空格和重復鍵)??高效查詢??:支持 GIN/GiST 索引,查詢速度比 JSON 類型快 10 倍??數據…

C++_核心編程_ 左移運算符重載 “<<” 左移運算符

作用&#xff1a;可以輸出自定義數據類型 */ //目標 調用p1,輸出Person 中的屬性 m_A ,m_B &#xff1a; /* #### 4.5.2 左移運算符重載 “<<” 左移運算符 作用&#xff1a;可以輸出自定義數據類型 *///目標 調用p1,輸出Person 中的屬性 m_A ,m_B &#xff1a; class…

thinkphp 5.1 部分知識記錄<一>

1、配置基礎 慣例配置->應用配置->模塊配置->動態配置 慣例配置:核心框架內置的配置文件,無需更改。應用配置:每個應用的全局配置文件(框架安裝后會生成初始的應用配置文件),有部分配置參數僅能在應用配置文件中設置。模塊配置:每個模塊的配置文件(相同的配置…

數據結構 -- 樹相關面試題

二、樹相關的填空題 1.對于一個具有 n 個結點的二叉樹&#xff0c;當它為一棵 ________ 二叉樹時&#xff0c;具有最小高度&#xff0c;即為 ________&#xff1b;當它為一棵單支樹時具有最大高度&#xff0c;即為 ________。 2.對于一個具有 n 個結點的二叉樹&#xff0c;當它…

2025河北CCPC 題解(部分)

簽到題&#xff1a;AC代碼如下 &#xff1a; // Problem: H - What is all you need? // Contest: Virtual Judge - sdccpc20250526 // URL: https://vjudge.net/contest/718568#problem/H // Memory Limit: 1024 MB // Time Limit: 1000 ms // // Powered by CP Editor (ht…

計算機視覺---YOLOv4

YOLOv4&#xff08;You Only Look Once v4&#xff09;于2020年由Alexey Bochkovskiy等人提出&#xff0c;是YOLO系列的重要里程碑。它在YOLOv3的基礎上整合了當時最先進的計算機視覺技術&#xff0c;實現了檢測速度與精度的顯著提升。以下從主干網絡、頸部網絡、頭部檢測、訓練…

OpenCV 第7課 圖像處理之平滑(一)

1. 圖像噪聲 在采集、處理和傳輸過程中,數字圖像可能會受到不同噪聲的干擾,從而導致圖像質量降低、圖像變得模糊、圖像特征被淹沒,而圖像平滑處理就是通過除去噪聲來達到圖像增強的目的。常見的圖像噪聲有椒鹽噪聲、高斯噪聲等。 1.1 椒鹽噪聲 椒鹽噪聲(Salt-and-pepper N…