Python使用OCR實(shí)現(xiàn)提取掃描PDF的文本
從 PDF 中提取文本一直是很多人的需求。市面上的工具雖然能處理大部分?jǐn)?shù)字 PDF,但遇到掃描件 PDF 時(shí)往往無(wú)能為力,想要直接復(fù)制或獲取其中的文字并不容易。其實(shí)這個(gè)問(wèn)題并不是沒有解法 —— 本文將帶你了解如何借助 Python + OCR 技術(shù),從掃描 PDF 中提取可編輯文本。
為什么提取掃描件 PDF 需要用到 OCR 技術(shù)
在探討如何從掃描件 PDF 中提取文本之前,我們先來(lái)了解一下 OCR 技術(shù) 及其重要性。
OCR(Optical Character Recognition,光學(xué)字符識(shí)別),是一種將圖像或視頻中的文字內(nèi)容轉(zhuǎn)化為可編輯文本的技術(shù)。它不僅能識(shí)別字符,還能保留一定的排版信息,因此被廣泛應(yīng)用在文檔數(shù)字化、檔案管理以及數(shù)據(jù)提取等場(chǎng)景中。
為什么提取掃描件 PDF 的文本離不開 OCR?原因在于 PDF 文件主要分為兩類:
- 標(biāo)準(zhǔn) PDF(數(shù)字 PDF):文檔中的文字是以字符形式存儲(chǔ)的,可以直接復(fù)制、搜索和提取。
- 掃描件 PDF:內(nèi)容本質(zhì)上是圖片,不包含可識(shí)別的文本信息,傳統(tǒng)的提取方法無(wú)法處理。
因此,當(dāng)面對(duì)掃描件 PDF 時(shí),OCR 技術(shù)就顯得尤為必要,它能幫助我們將圖片中的文字識(shí)別出來(lái),轉(zhuǎn)換為真正可操作的文本。
安裝必要的 Python 庫(kù)
在了解了基礎(chǔ)知識(shí)之后,我們進(jìn)入到 工具準(zhǔn)備環(huán)節(jié)。本文將主要使用兩款庫(kù):Spire.PDF for Python 和 Spire.OCR for Python。有了它們,處理掃描件 PDF 并提取文本會(huì)變得高效而簡(jiǎn)單。
- Spire.PDF:負(fù)責(zé)將掃描件 PDF 轉(zhuǎn)換為適合 OCR 處理的圖片。
- Spire.OCR:對(duì)這些圖片進(jìn)行文字識(shí)別,并輸出可編輯的文本內(nèi)容。
它們的安裝方式十分便捷,只需在命令行中運(yùn)行以下命令:
pip install spire.pdf pip install spire.ocr
除了使用 pip 安裝外,你也可以前往 E-iceblue 官網(wǎng) 下載相應(yīng)的安裝包并手動(dòng)安裝。
通過(guò) Python 將 PDF 轉(zhuǎn)換為圖像
正如前面提到的,OCR 無(wú)法直接處理 PDF 文件,尤其是掃描件 PDF。因此,第一步我們需要先將其轉(zhuǎn)換為圖片。借助 Spire.PDF,這個(gè)過(guò)程十分簡(jiǎn)便:只需加載 PDF 文檔,遍歷頁(yè)面,然后調(diào)用 PdfDocument.SaveAsImage() 方法,就能將每一頁(yè)保存為圖像文件。
在保存時(shí),你還可以根據(jù)需求選擇 PNG、JPG 或 BMP 等常見格式。下面的示例代碼演示了如何使用 Python 將掃描件 PDF 轉(zhuǎn)換為 PNG 圖片:
from spire.pdf import *
# 加載 PDF 文件
pdf = PdfDocument()
pdf.LoadFromFile("E:/Administrator/Python1/input/AI繪畫的利與弊.pdf")
# 遍歷 PDF 頁(yè)面
for i in range(pdf.Pages.Count):
# 將每一頁(yè)轉(zhuǎn)換為圖像
with pdf.SaveAsImage(i) as image:
# 保存圖像
image.Save(f"E:/Administrator/Python1/output/pdftoimage/ToImage_{i}.png")
# image.Save(f"Output/ToImage_{i}.jpg")
# image.Save(f"Output/ToImage_{i}.bmp")
pdf.Close()

OCR 識(shí)別并提取掃描件 PDF 中的文本
完成 PDF 轉(zhuǎn)圖片 的步驟后,我們就可以進(jìn)入核心環(huán)節(jié)——使用 OCR 掃描圖片并提取文字。借助 OcrScanner.Scan() 方法,這個(gè)過(guò)程非常簡(jiǎn)單。它不僅能夠從圖片中獲取文本,還支持包括 中文、英文、法語(yǔ) 在內(nèi)的多種語(yǔ)言識(shí)別,可以做到“一字不落”。
下面的示例演示了如何在 Python 中調(diào)用 OCR,對(duì)前一步生成的 PDF 圖片進(jìn)行文字識(shí)別,并將結(jié)果保存為 .txt 文檔:
from spire.ocr import *
# 創(chuàng)建 OCR 掃描器實(shí)例
scanner = OcrScanner()
# 配置 OCR 模型路徑和語(yǔ)言
configureOptions = ConfigureOptions()
configureOptions.ModelPath = r'E:/DownloadsNew/win-x64/'
configureOptions.Language = 'Chinese'
scanner.ConfigureDependencies(configureOptions)
# 使用 OCR 掃描圖片
scanner.Scan(r'E:/Administrator/Python1/output/pdftoimage/ToImage_0.png')
# 將提取的文本保存為文本文件
text = scanner.Text.ToString()
with open('E:/Administrator/Python1/output/掃描件PDF文本提取.txt', 'a', encoding='utf-8') as file:
file.write(text + '\n')

結(jié)論
通過(guò)本文的示例,我們完成了從掃描件 PDF 轉(zhuǎn)換為圖片,再利用 OCR 技術(shù)識(shí)別并提取文本的全過(guò)程。借助 Spire.PDF for Python 和 Spire.OCR for Python,這一流程不僅簡(jiǎn)單高效,而且對(duì)多語(yǔ)言的支持也非常友好。如果你也在尋找快速處理掃描件 PDF 的方法,不妨嘗試一下這兩個(gè)庫(kù)。
到此這篇關(guān)于Python使用OCR實(shí)現(xiàn)提取掃描PDF的文本的文章就介紹到這了,更多相關(guān)Python提取掃描PDF內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
對(duì)numpy 數(shù)組和矩陣的乘法的進(jìn)一步理解
下面小編就為大家分享一篇對(duì)numpy 數(shù)組和矩陣的乘法的進(jìn)一步理解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2018-04-04
Python 找出英文單詞列表(list)中最長(zhǎng)單詞鏈
這篇文章主要介紹了Python 找出英文單詞列表(list)中最長(zhǎng)單詞鏈,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-12-12
python獲取當(dāng)前git的repo地址的示例代碼
大家好,當(dāng)談及版本控制系統(tǒng)時(shí),Git是最為廣泛使用的一種,而Python作為一門多用途的編程語(yǔ)言,在處理Git倉(cāng)庫(kù)時(shí)也展現(xiàn)了其強(qiáng)大的能力,本文給大家介紹了python獲取當(dāng)前git的repo地址的方法,需要的朋友可以參考下2024-09-09
Python 調(diào)用 Outlook 發(fā)送郵件過(guò)程解析
這篇文章主要介紹了Python 調(diào)用 Outlook 發(fā)送郵件過(guò)程解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2019-08-08
Windows11使用Cpython?編譯文件報(bào)錯(cuò)?error:?Unable?to?find?vcvars
這篇文章主要介紹了Windows11使用Cpython編譯文件報(bào)錯(cuò)error:Unable?to find?vcvarsall.bat完美解決方法,本文通過(guò)圖文并茂的形式給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2023-05-05
從原理到生產(chǎn)部署解析Python多服務(wù)器監(jiān)控告警系統(tǒng)開發(fā)
這篇文章將從原理到生產(chǎn)部署帶大家深入解析Python多服務(wù)器監(jiān)控告警系統(tǒng)開發(fā)過(guò)程,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下2025-09-09
Django用戶認(rèn)證系統(tǒng) Web請(qǐng)求中的認(rèn)證解析
這篇文章主要介紹了Django用戶認(rèn)證系統(tǒng) Web請(qǐng)求中的認(rèn)證解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2019-08-08

