Python利用Spire.OCR for Python實(shí)現(xiàn)從圖片中提取文本和坐標(biāo)
引言
在數(shù)據(jù)處理、文檔數(shù)字化及圖像內(nèi)容分析等開發(fā)場(chǎng)景中,光學(xué)字符識(shí)別(OCR)技術(shù)常被用于將圖像中的文字轉(zhuǎn)化為可編輯、可搜索的文本格式。Spire.OCR for Python 作為 Python 生態(tài)中的一款 OCR 類庫(kù),可實(shí)現(xiàn)圖片文本提取及文字位置定位,適用于發(fā)票信息處理、表單數(shù)據(jù)解析、截圖內(nèi)容提取等場(chǎng)景,以下從技術(shù)特性、實(shí)現(xiàn)步驟及應(yīng)用方向展開介紹。
一、核心技術(shù)特性
Spire.OCR for Python 支持 JPG、PNG、BMP、TIFF 四種主流圖像格式,在功能設(shè)計(jì)上具備以下技術(shù)特點(diǎn):
- 文本坐標(biāo)提取能力:可直接獲取文字的 X/Y 軸位置、寬度與高度,為后續(xù)圖像標(biāo)注、文本區(qū)域定位提供數(shù)據(jù)支持。
- 低依賴部署:無需額外配置環(huán)境或安裝底層庫(kù),安裝后即可直接調(diào)用,降低入門門檻。
- 多語言識(shí)別支持:涵蓋英語、中文、日語、韓語、德語、法語等常用語言,可根據(jù)識(shí)別場(chǎng)景切換目標(biāo)語言。
二、OCR文字識(shí)別功能實(shí)現(xiàn)流程
步驟 1:環(huán)境準(zhǔn)備與安裝
打開電腦的命令提示符(Windows)或終端(macOS/Linux),輸入以下 pip 命令,一鍵完成安裝:
pip install Spire.OCR
模型要求:點(diǎn)擊下載對(duì)應(yīng)的 OCR 模型文件(Windows系統(tǒng)、Linux系統(tǒng)、 macOS系統(tǒng) )。解壓后保存至本地路徑,后續(xù)配置時(shí)需引用該路徑。
步驟 2:模塊導(dǎo)入
在 Python 腳本中導(dǎo)入類庫(kù)核心模塊,用于初始化 OCR 掃描實(shí)例及配置參數(shù):
from spire.ocr import * # 導(dǎo)入OCR核心功能模塊
步驟 3:配置 OCR 依賴項(xiàng)
創(chuàng)建 OCR 掃描對(duì)象并設(shè)置關(guān)鍵參數(shù),包括模型文件路徑與識(shí)別語言,參數(shù)配置錯(cuò)誤會(huì)導(dǎo)致識(shí)別功能無法正常運(yùn)行:
# 初始化OCR掃描實(shí)例 scanner = OcrScanner() # 配置引擎參數(shù) configureOptions = ConfigureOptions() # 模型文件本地路徑(需根據(jù)實(shí)際保存位置修改) configureOptions.ModelPath = "F:\\OCR Model\\win-x64" # 識(shí)別語言設(shè)置(支持"Chinese"、"English"、"Japanese"等) configureOptions.Language = "Chinese" # 應(yīng)用配置參數(shù) scanner.ConfigureDependencies(configureOptions
步驟 4:文本提取與坐標(biāo)獲取
指定目標(biāo)圖像文件路徑,執(zhí)行掃描操作后,可提取文本內(nèi)容及每個(gè)文本塊的位置信息:
# 目標(biāo)圖像路徑(替換為實(shí)際圖像文件路徑)
target_image = "模板.png"
# 執(zhí)行OCR掃描
scanner.Scan(target_image)
# 獲取掃描結(jié)果
ocr_result = scanner.Text
# 提取文本塊內(nèi)容與位置信息
blocks_info = [
f'文本內(nèi)容: "{block.Text}"\n'
f'位置坐標(biāo): (x={block.Box.X}, y={block.Box.Y})\n'
f'文本塊尺寸: 寬度{block.Box.Width} x 高度{block.Box.Height}\n'
f'---------------------------------\n'
for block in ocr_result.Blocks # 遍歷文本塊
]
# 打印提取結(jié)果(也可根據(jù)需求輸出至日志或控制臺(tái))
print("\n".join(blocks_info))
步驟 5:結(jié)果持久化存儲(chǔ)
若需留存識(shí)別結(jié)果,可將文本內(nèi)容與坐標(biāo)信息寫入本地文件,需指定 UTF-8 編碼避免中文亂碼:
# 寫入TXT文件(追加模式,避免覆蓋已有內(nèi)容)
with open("Ocr文字識(shí)別.txt", 'a', encoding='utf-8') as file:
file.write('\n'.join(blocks_info) + '\n\n')
讀取結(jié)果:

三、進(jìn)階應(yīng)用與批量處理
1. 批量圖像識(shí)別實(shí)現(xiàn)
針對(duì)多圖像文件處理場(chǎng)景,可通過遍歷文件夾實(shí)現(xiàn)批量 OCR 操作,提升處理效率:
import os
image_dir = r'images/'
for filename in os.listdir(image_dir):
if filename.endswith(('.png', '.jpg', '.jpeg')):
scanner.Scan(os.path.join(image_dir, filename))
# OCR識(shí)別圖片文本
2. 文本坐標(biāo)的技術(shù)應(yīng)用方向
文本塊坐標(biāo)參數(shù)可支撐以下技術(shù)場(chǎng)景實(shí)現(xiàn):
- 圖像文本標(biāo)注:結(jié)合 PIL、OpenCV 等圖像處理庫(kù),根據(jù)坐標(biāo)在原圖中繪制矩形框,標(biāo)注出識(shí)別到的文本(比如做數(shù)據(jù)標(biāo)注工具);
- 文檔結(jié)構(gòu)分析:通過標(biāo)題、正文、表格等文本塊的坐標(biāo)分布,判斷文檔內(nèi)容層級(jí)與布局結(jié)構(gòu);
- 關(guān)聯(lián)數(shù)據(jù)提取:在結(jié)構(gòu)化文檔(如表單、發(fā)票)處理中,根據(jù)關(guān)鍵信息(如金額、項(xiàng)目名稱)的坐標(biāo),關(guān)聯(lián)提取對(duì)應(yīng)字段數(shù)據(jù)。
四、常見問題與處理建議
- 模型路徑錯(cuò)誤:需確認(rèn)ModelPath參數(shù)與實(shí)際模型文件保存路徑一致,注意不同操作系統(tǒng)的路徑分隔符差異;
- 文本亂碼問題:寫入文件時(shí)需顯式指定
encoding="utf-8",避免中文及特殊字符亂碼; - 識(shí)別準(zhǔn)確率波動(dòng):識(shí)別效果受圖像質(zhì)量影響較大,建議使用清晰度高、文字方向正的圖像;若識(shí)別特定語言,需確保Language參數(shù)與目標(biāo)語言匹配。
以上就是Python利用Spire.OCR for Python實(shí)現(xiàn)從圖片中提取文本和坐標(biāo)的詳細(xì)內(nèi)容,更多關(guān)于Python OCR圖片中提取文本和坐標(biāo)的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
如何實(shí)現(xiàn)Python調(diào)用Golang代碼詳解
這篇文章主要介紹了如何實(shí)現(xiàn)Python調(diào)用Golang代碼,Python和Golang都是當(dāng)下非常流行的編程語言,在實(shí)際開發(fā)中,我們可能會(huì)遇到需要將Python和Golang進(jìn)行組合使用的場(chǎng)景,感興趣想要詳細(xì)了解可以參考下文2023-05-05
python實(shí)現(xiàn)人臉識(shí)別代碼
這篇文章主要介紹了python實(shí)現(xiàn)人臉識(shí)別代碼,還是比較不錯(cuò)的,這里分享個(gè)大家,共需要的朋友參考。2017-11-11
Python3訪問MySQL數(shù)據(jù)庫(kù)的實(shí)現(xiàn)步驟
要實(shí)現(xiàn)一個(gè)簡(jiǎn)單的IM(即時(shí)通訊)系統(tǒng),支持用戶注冊(cè)、登錄和聊天記錄存儲(chǔ),你可以使用Python和mysql數(shù)據(jù)庫(kù),以下是一個(gè)基本的實(shí)現(xiàn)步驟,并通過代碼示例講解的非常詳細(xì),需要的朋友可以參考下2024-11-11
Python利用Flask動(dòng)態(tài)生成漢字頭像
這篇文章主要為大家詳細(xì)介紹了Python如何利用Flask動(dòng)態(tài)生成一個(gè)漢字頭像,文中的示例代碼講解詳細(xì),對(duì)我們學(xué)習(xí)Python有一定的幫助,需要的可以參考一下2023-01-01
使用Pandas實(shí)現(xiàn)清洗客戶編碼異常數(shù)據(jù)
在不同行業(yè)中,我們經(jīng)常會(huì)遇到一個(gè)麻煩的問題:數(shù)據(jù)清洗,尤其是當(dāng)我們需要處理客戶編碼異常數(shù)據(jù)時(shí),下面小編就來和大家分享一下常用的解決辦法吧2023-07-07
Django 項(xiàng)目重命名的實(shí)現(xiàn)步驟解析
這篇文章主要介紹了Django 項(xiàng)目重命名的實(shí)現(xiàn)步驟,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2019-08-08
Tkinter中復(fù)選菜單是否被選中的判斷與設(shè)置方式
這篇文章主要介紹了Tkinter中復(fù)選菜單是否被選中的判斷與設(shè)置方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2020-03-03
詳解Python中Pandas read_csv參數(shù)使用
在使用 Pandas 進(jìn)行數(shù)據(jù)分析和處理時(shí),read_csv 是一個(gè)非常常用的函數(shù),本文將詳細(xì)介紹 read_csv 函數(shù)的各個(gè)參數(shù)及其用法,希望對(duì)大家有所幫助2022-10-10
python socket多線程實(shí)現(xiàn)客戶端與服務(wù)器連接
這篇文章主要為大家詳細(xì)介紹了python socket多線程實(shí)現(xiàn)客戶端與服務(wù)器連接,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-09-09
Python lambda和Python def區(qū)別分析
Python支持一種有趣的語法,它允許你快速定義單行的最小函數(shù)。這些叫做lambda的函數(shù),是從Lisp借用來的,可以用在任何需要函數(shù)的地方2014-11-11

