Python實現(xiàn)識別圖片和掃描PDF中的文字
在處理掃描的PDF和圖片時,文字信息往往無法直接編輯、搜索或復(fù)制,這給信息提取和分析帶來了諸多不便。手動錄入信息不僅耗時費力,還容易出錯。光學(xué)字符識別(OCR)技術(shù)能夠?qū)D片中的文字轉(zhuǎn)換為可編輯文本,使信息提取和處理更加高效。如今,OCR已廣泛應(yīng)用于掃描文件的轉(zhuǎn)換、數(shù)字化文檔的整理、以及自動化數(shù)據(jù)輸入等領(lǐng)域。本文將介紹如何使用Python及相關(guān)OCR庫,實現(xiàn)對圖片和掃描PDF中文字的識別。
工具與設(shè)置
要在Python中實現(xiàn)從圖片和掃描PDF中提取文本,我們需要選擇一個適當(dāng)?shù)腛CR庫。本文所選擇的庫是Spire.OCR for Python。該庫支持多種語言,包括英語、法語、德語、簡體中文、繁體中文、日語、韓語等。在使用該庫之前,我們需要完成以下兩個步驟:
步驟1:安裝Spire.OCR for Python
在終端中運行以下命令安裝Spire.OCR for Python:
pip install Spire.OCR
步驟2:下載OCR模型
Spire.OCR for Python提供了支持Windows(64位)、Linux(64位)和MacOS(10.15及以上)操作系統(tǒng)的三種模型。我們需要根據(jù)自己的系統(tǒng)下載適合的模型:
下載完成后,將它解壓并保存到特定的目錄下。
完成以上兩個步驟后,我們就可以使用該庫實現(xiàn)識別圖片和掃描PDF中的文字。
Python 識別圖片中的文字
從圖片中提取文本的過程比較簡單。首先,需要配置 OCR 掃描器的相關(guān)設(shè)置(例如:文本識別語言和OCR模型的路徑);然后對圖片進(jìn)行掃描;最后將識別的文字保存為文本文件。
以下是從圖片中提取文本的關(guān)鍵步驟:
- 初始化 OCR 掃描器:創(chuàng)建 OcrScanner 對象。
- 配置 OCR 設(shè)置:通過 OcrScanner 對象的 ConfigureDependencies 方法,設(shè)置 OCR 模型的路徑和文本識別語言。
- 掃描圖片:使用 OcrScanner 對象的 Scan() 方法,從圖片中識別文本。
- 保存文本:獲取識別出的文本并保存為文本文件。
實現(xiàn)代碼:
from spire.ocr import *
# 初始化OcrScanner對象
scanner = OcrScanner()
# 配置OCR設(shè)置(文本識別語言和OCR模型路徑)
# 支持的語言包括英語、法語、德語、日語、韓語、簡體中文、繁體中文等
configureOptions = ConfigureOptions()
configureOptions.ModelPath = r'D:\OCR\win-x64'
configureOptions.Language = 'Chinese'
scanner.ConfigureDependencies(configureOptions)
# 掃描圖片
scanner.Scan(r'測試.png')
# 獲取識別的文本
text = scanner.Text.ToString() + '\n'
# 將文本保存到文本文件
with open('輸出.txt', 'a', encoding='utf-8') as file:
file.write(text + '\n')原始圖片和識別結(jié)果:

Python 識別圖片中的文字及其坐標(biāo)位置
有時除了識別文本外,還需要獲取文本在圖片中的坐標(biāo)位置。Spire.OCR也支持提取這些信息。
以下是從圖片中識別文本并獲取其坐標(biāo)位置的關(guān)鍵步驟:
- 初始化OCR掃描器:創(chuàng)建OcrScanner對象。
- 配置OCR設(shè)置:通過OcrScanner對象的ConfigureDependencies方法設(shè)置OCR模型的路徑和文本識別語言。
- 掃描圖片:使用OcrScanner 對象的Scan() 方法從圖片中識別文本。
- 獲取邊框坐標(biāo):遍歷識別的文本中的文本塊,獲取每個文本塊的邊框信息(x, y坐標(biāo)及其寬度和高度)。
- 保存文本和坐標(biāo):將文本及其坐標(biāo)保存到文本文件中。
實現(xiàn)代碼:
from spire.ocr import *
# 初始化OcrScanner對象
scanner = OcrScanner()
# 配置OCR設(shè)置(文本識別語言和OCR模型路徑)
# 支持的語言包括英語、法語、德語、日語、韓語、簡體中文、繁體中文等
configureOptions = ConfigureOptions()
configureOptions.ModelPath = r'D:\OCR\win-x64'
configureOptions.Language = 'Chinese'
scanner.ConfigureDependencies(configureOptions)
# 掃描圖片
scanner.Scan(r'測試.png')
# 遍歷識別的文本中的文本塊,提取每個文本塊的文本和坐標(biāo)位置等信息
text = ''
for block in scanner.Text.Blocks:
rectangle = block.Box
positions = f'{block.Text} -> x: {rectangle.X}, y: {rectangle.Y}, w: {rectangle.Width}, h: {rectangle.Height}'
text += positions + '\n'
# 將文本和坐標(biāo)保存到文本文件
with open('圖片文字及坐標(biāo).txt', 'a', encoding='utf-8') as file:
file.write(text + '\n')Python 識別掃描PDF中的文字
對于掃描的PDF文檔,需先將每一頁轉(zhuǎn)換為圖片格式??梢越柚?a target="_blank">Spire.PDF for Python庫來實現(xiàn)這一點。將PDF頁面轉(zhuǎn)換為圖片后,即可對每張圖片執(zhí)行 OCR 處理。
在使用以下代碼之前,請先通過以下命令安裝Spire.PDF:
pip install Spire.PDF
以下是從掃描PDF中提取文本的關(guān)鍵步驟:
- 將PDF頁面轉(zhuǎn)換為圖片:使用Spire.PDF加載掃描的PDF文檔,然后使用PdfDocument.SaveAsImage()方法將文檔的每一頁保存為圖片。
- 執(zhí)行OCR:使用Spire.OCR識別每張圖片中的文本。
- 保存識別的文本:將識別的文本保存到文本文件中。
實現(xiàn)代碼:
from spire.pdf import *
from spire.ocr import *
import io
# 將PDF頁面轉(zhuǎn)換為圖片
def convert_pdf_page_to_image(pdf, page_index):
return pdf.SaveAsImage(page_index)
# 從圖片中識別文本
def recognize_text_from_image(imgName, language, model_path):
# 初始化OCR掃描器并配置OCR模型的路徑和文本識別語言
scanner = OcrScanner()
configure_options = ConfigureOptions()
configure_options.Language = language
configure_options.ModelPath = model_path
scanner.ConfigureDependencies(configure_options)
# 執(zhí)行OCR并返回識別的文本
scanner.Scan(imgName)
data = scanner.Text.ToString()
return data
# 加載掃描PDF文檔
pdf = PdfDocument()
pdf.LoadFromFile('掃描.pdf')
# 創(chuàng)建文本文件以保存提取的文本
with open('掃描PDF.txt', 'a', encoding='utf-8') as writer:
for page_index in range(pdf.Pages.Count):
# 將PDF頁面轉(zhuǎn)換為圖片
image = convert_pdf_page_to_image(pdf, page_index)
imgName="toImage_"+str(page_index)+".png"
image.Save(imgName)
# 從圖片中識別文本
recognized_text = recognize_text_from_image(imgName, 'Chinese', r'D:\OCR\win-x64')
# 將識別的文本寫入文本文件
writer.write(f'Page {page_index + 1}:\n')
writer.write(recognized_text)
writer.write('\n\n') # 在頁面之間添加兩個換行符
print('文本已成功保存到"掃描PDF.txt"。')注意事項
OCR的準(zhǔn)確性很大程度上受到圖片質(zhì)量的影響。使用清晰、對比度良好,不模糊、傾斜的圖片,可以提高識別結(jié)果的準(zhǔn)確性。不同OCR庫可能對不同語言和字體的支持程度不同,一些特定語言或字體可能識別效果較差。因此在識別完成后,最好再人工校對一遍。
到此這篇關(guān)于Python實現(xiàn)識別圖片和掃描PDF中的文字的文章就介紹到這了,更多相關(guān)Python識別圖片和PDF內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
python線程安全及多進(jìn)程多線程實現(xiàn)方法詳解
這篇文章主要介紹了python線程安全及多進(jìn)程多線程實現(xiàn)方法詳解,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下2019-09-09
Pytorch反向求導(dǎo)更新網(wǎng)絡(luò)參數(shù)的方法
今天小編就為大家分享一篇Pytorch反向求導(dǎo)更新網(wǎng)絡(luò)參數(shù)的方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2019-08-08
Python實現(xiàn)破解12306圖片驗證碼的方法分析
這篇文章主要介紹了Python實現(xiàn)破解12306圖片驗證碼的方法,涉及Python圖片截取、調(diào)用百度識圖及正則截取等相關(guān)操作技巧,需要的朋友可以參考下2017-12-12

