Python使用OCR實(shí)現(xiàn)提取掃描PDF的文本
從 PDF 中提取文本一直是很多人的需求。市面上的工具雖然能處理大部分?jǐn)?shù)字 PDF,但遇到掃描件 PDF 時(shí)往往無(wú)能為力,想要直接復(fù)制或獲取其中的文字并不容易。其實(shí)這個(gè)問(wèn)題并不是沒(méi)有解法 —— 本文將帶你了解如何借助 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 的文本離不開(kāi) OCR?原因在于 PDF 文件主要分為兩類(lèi):
- 標(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 等常見(jiàn)格式。下面的示例代碼演示了如何使用 Python 將掃描件 PDF 轉(zhuǎn)換為 PNG 圖片:
from spire.pdf import *
# 加載 PDF 文件
pdf = PdfDocument()
pdf.LoadFromFile("E:/Administrator/Python1/input/AI繪畫(huà)的利與弊.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)文章
解決安裝python庫(kù)時(shí)windows error5 報(bào)錯(cuò)的問(wèn)題
今天小編就為大家分享一篇解決安裝python庫(kù)時(shí)windows error5 報(bào)錯(cuò)的問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2018-10-10
基于Python實(shí)現(xiàn)給喜歡的主播自動(dòng)發(fā)彈幕
這篇文章主要介紹了python如何實(shí)現(xiàn)給喜歡的主播自動(dòng)發(fā)彈幕的功能,文中的示例代碼對(duì)我們學(xué)習(xí)Python有一定的幫助,感興趣的朋友可以了解下2021-12-12
Python深度學(xué)習(xí)神經(jīng)網(wǎng)絡(luò)基本原理
人工神經(jīng)網(wǎng)絡(luò)(Artificial Neural Networks,簡(jiǎn)寫(xiě)為ANNs)也簡(jiǎn)稱(chēng)為神經(jīng)網(wǎng)絡(luò)(NNs)或稱(chēng)作連接模型(Connection Model),它是一種模仿動(dòng)物神經(jīng)網(wǎng)絡(luò)行為特征,進(jìn)行分布式并行信息處理的算法數(shù)學(xué)模型2021-10-10
python實(shí)現(xiàn)代碼統(tǒng)計(jì)器
這篇文章主要為大家詳細(xì)介紹了python實(shí)現(xiàn)代碼統(tǒng)計(jì)器,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2019-09-09
Python pygame實(shí)現(xiàn)中國(guó)象棋單機(jī)版源碼
今天給大家?guī)?lái)的是關(guān)于Python實(shí)戰(zhàn)的相關(guān)知識(shí),文章圍繞著用Python pygame實(shí)現(xiàn)中國(guó)象棋單機(jī)版展開(kāi),文中有非常詳細(xì)的代碼示例,需要的朋友可以參考下2021-06-06
Python數(shù)據(jù)可視化之分析熱門(mén)話(huà)題“丁克家庭都怎么樣了”
今天小編就以一個(gè)數(shù)據(jù)分析師的視角來(lái)向大家講述一下年輕人群體對(duì)于丁克的態(tài)度以及那些丁克家庭他們的想法是怎么樣的?他們是否有過(guò)后悔當(dāng)初的決定,需要的朋友可以參考下2021-06-06
python如果快速判斷數(shù)字奇數(shù)偶數(shù)
這篇文章主要介紹了python如果快速判斷數(shù)字奇數(shù)偶數(shù),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2019-11-11

