最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Python結(jié)合OCR實現(xiàn)從掃描件PDF中提取文本

 更新時間:2025年10月26日 09:15:50   作者:Eiceblue  
掃描件 PDF 本質(zhì)是 “圖像集合”,無法直接復制或編輯文本,要提取其中的內(nèi)容,需借助OCR,下面我們就來看看如何通過 Python 結(jié)合 OCR 技術(shù)實現(xiàn)從掃描件 PDF 中提取文本吧

掃描件 PDF 本質(zhì)是 “圖像集合”(每一頁都是一張圖片),無法直接復制或編輯文本。要提取其中的內(nèi)容,需借助OCR(光學字符識別)技術(shù)。本文將介紹如何通過 Python 結(jié)合 OCR 技術(shù)實現(xiàn)從掃描件 PDF 中提取文本,涵蓋環(huán)境搭建及示例代碼。

一、核心原理

提取 PDF 掃描件的文本的流程可拆解為 3 步:

  • PDF 轉(zhuǎn)圖像:將掃描件 PDF 的每一頁拆分為獨立圖像(如 PNG/JPG);
  • OCR 識別:用 OCR 工具分析圖像,將其中的文字轉(zhuǎn)換為可編輯文本;
  • 結(jié)果保存:將識別后的文本匯總到文件中(如 TXT)。

二、所需工具

要完成OCR PDF 的任務(wù),需安裝以下兩個核心庫,分工明確:

  • Spire.PDF for Python: 將 PDF 頁面轉(zhuǎn)換為圖像(輕量、兼容性好)
  • Spire.OCR for Python:對轉(zhuǎn)換后的圖像執(zhí)行OCR文本識別 (支持多語言)

安裝命令:

打開終端/命令提示符,輸入以下pip命令,依次安裝兩個庫:

# 安裝PDF轉(zhuǎn)圖像庫
pip install Spire.PDF
# 安裝OCR識別庫
pip install Spire.OCR

背景知識:Spire.OCR的用法之前已經(jīng)詳細講解過,可參考:Python利用Spire.OCR for Python實現(xiàn)從圖片中提取文本和坐標

二、PDF文字識別提取步驟

下面我們以 “提取掃描 (圖片型)PDF 中的中文文本” 為例,步驟如下。

步驟1:導入核心模塊

首先導入兩個庫的核心類,后續(xù)所有操作都基于這些模塊:

# 導入Spire.PDF的核心類(用于PDF加載和轉(zhuǎn)圖像)
from spire.pdf import *
# 導入Spire.OCR的核心類(用于OCR引擎初始化和文本識別)
from spire.ocr import *

步驟2:初始化 OCR 引擎(關(guān)鍵配置)

OCR識別的準確率,很大程度取決于引擎的配置—尤其是模型路徑和識別語言,這兩步錯了會直接導致識別失敗。

# 初始化 OcrScanner
ocr_scanner = OcrScanner()

# 配置 OCR 依賴
config = ConfigureOptions()
# 設(shè)置OCR模型路徑 (模型需提前下載,鏈接在另一篇文章)
config.ModelPath = "F:\\OCR Model\\win-x64"
# 設(shè)置識別語言(支持多語言,如"Chinese"“Japanese”“French”)
config.Language = "Chinese"

# 將配置應(yīng)用到 OCR 引擎
ocr_scanner.ConfigureDependencies(config)

步驟3:加載 PDF 并轉(zhuǎn)換為圖像

掃描PDF的本質(zhì)是“一頁頁的圖像”,所以需要先把PDF的每一頁拆成獨立圖像(建議用PNG格式,無損壓縮不影響識別):

# 加載目標 PDF 文件
pdf_doc = PdfDocument()
pdf_doc.LoadFromFile("示例.pdf")  # 替換為你的PDF實際路徑

# 循環(huán)遍歷PDF的每一頁,轉(zhuǎn)換為圖像并保存
for page_index in range(pdf_doc.Pages.Count):
    with pdf_doc.SaveAsImage(page_index) as page_image:
        page_image.Save(f"Pdf圖片_{page_index}.png")  # 保存為PNG格式,文件名按頁碼命名
                # 掃描圖像
        ocr_scanner.Scan(f"Pdf圖片_{page_index}.png")

步驟4:OCR識別圖像并保存文本

最后一步,對每個圖像執(zhí)行OCR識別,再將結(jié)果匯總到文本文件中(支持追加寫入,避免覆蓋):

        # 從圖像中提取文本
        scan_result = ocr_scanner.Text.ToString()
        
        # 將提取的文本追加寫入文件
        with open("PDF文本.txt", 'a', encoding='utf-8') as file:
            file.write(scan_result + '\n')

輸出結(jié)果:

運行代碼后,你會得到兩個類型的文件:

1.圖像文件:如Pdf圖片_1.png、Pdf圖片_2.png,對應(yīng)PDF的每一頁;

2.文本文件PDF文本.txt,里面包含每一頁的識別文本,示例如下:

四、常見問題&解決方案

常見問題可能原因解決方案
OCR識別結(jié)果亂碼/錯字多1. 圖像分辨率低、模糊;2. 語言設(shè)置錯誤;3. 對比度低1. 確保PDF掃描分辨率≥300DPI;2. 核對Language參數(shù)(如中文設(shè)為"Chinese");3. 用圖像工具提升對比度
OCR引擎初始化失敗1. 模型路徑錯誤;2. 模型文件缺失1. 用絕對路徑+原始字符串r"";2. 重新下載完整模型包
PDF加載失敗1. 文件路徑錯誤;2. PDF文件損壞;3. 無讀取權(quán)限1. 檢查路徑是否有空格/特殊字符;2. 用Adobe打開驗證文件完整性;3. 賦予文件“讀取”權(quán)限

到此這篇關(guān)于Python結(jié)合OCR實現(xiàn)從掃描件PDF中提取文本的文章就介紹到這了,更多相關(guān)Python提取PDF掃描件文本內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Python的Flask框架中SQLAlchemy使用時的亂碼問題解決

    Python的Flask框架中SQLAlchemy使用時的亂碼問題解決

    這篇文章主要介紹了Python的Flask框架中SQLAlchemy使用時的亂碼問題解決,SQLAlchemy與Python結(jié)合對數(shù)據(jù)庫的操作非常方便,需要的朋友可以參考下
    2015-11-11
  • TensorFlow實現(xiàn)Batch Normalization

    TensorFlow實現(xiàn)Batch Normalization

    這篇文章主要為大家詳細介紹了TensorFlow實現(xiàn)Batch Normalization,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-03-03
  • Django打印出在數(shù)據(jù)庫中執(zhí)行的語句問題

    Django打印出在數(shù)據(jù)庫中執(zhí)行的語句問題

    這篇文章主要介紹了Django打印出在數(shù)據(jù)庫中執(zhí)行的語句,文中給大家提到了Django 查看執(zhí)行的sql語句方法,代碼簡單易懂,非常不錯,具有一定的參考借鑒價值,需要的朋友可以參考下
    2019-07-07
  • Python編譯結(jié)果之code對象與pyc文件詳解

    Python編譯結(jié)果之code對象與pyc文件詳解

    今天小編就為大家分享一篇對Python編譯結(jié)果之code對象與pyc文件的詳解,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2021-10-10
  • scikit-learn處理缺失數(shù)據(jù)的方法與實踐

    scikit-learn處理缺失數(shù)據(jù)的方法與實踐

    scikit-learn作為Python中廣泛使用的機器學習庫,提供了多種工具和技術(shù)來幫助我們處理缺失數(shù)據(jù),本文將詳細介紹sklearn處理缺失數(shù)據(jù)的方法,并提供實際的代碼示例,需要的朋友可以參考下
    2024-06-06
  • Python+Turtle繪制表白比心圖案

    Python+Turtle繪制表白比心圖案

    這篇文章主要為大家詳細介紹了如何運用Python中的turtle庫控制函數(shù)來繪制表白比心圖案,文中的示例代碼講解詳細,感興趣的小伙伴可以嘗試一下
    2022-11-11
  • python實現(xiàn)最速下降法

    python實現(xiàn)最速下降法

    這篇文章主要為大家詳細介紹了python實現(xiàn)最速下降法,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-03-03
  • 基于Python組裝jmx并調(diào)用JMeter實現(xiàn)壓力測試

    基于Python組裝jmx并調(diào)用JMeter實現(xiàn)壓力測試

    這篇文章主要介紹了基于Python組裝jmx并調(diào)用JMeter實現(xiàn)壓力測試,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-11-11
  • 解決Python網(wǎng)頁爬蟲之中文亂碼問題

    解決Python網(wǎng)頁爬蟲之中文亂碼問題

    今天小編就為大家分享一篇解決Python網(wǎng)頁爬蟲之中文亂碼問題,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-05-05
  • Python實現(xiàn)周期性抓取網(wǎng)頁內(nèi)容的方法

    Python實現(xiàn)周期性抓取網(wǎng)頁內(nèi)容的方法

    這篇文章主要介紹了Python實現(xiàn)周期性抓取網(wǎng)頁內(nèi)容的方法,涉及Python時間函數(shù)及正則匹配的相關(guān)操作技巧,具有一定參考借鑒價值,需要的朋友可以參考下
    2015-11-11

最新評論

鱼台县| 桂平市| 沙田区| 会东县| 平顶山市| 屏山县| 英山县| 曲水县| 红安县| 织金县| 涟源市| 敖汉旗| 安义县| 荣昌县| 竹北市| 锦州市| 南岸区| 壶关县| 威远县| 繁峙县| 南丹县| 永济市| 乐昌市| 阿勒泰市| 霞浦县| 合水县| 南汇区| 仁怀市| 怀集县| 罗定市| 民丰县| 仁怀市| 土默特右旗| 乐都县| 邵武市| 合山市| 常州市| 壤塘县| 乐安县| 凤城市| 内丘县|