pytesseract實現識別pdf檔案並將內容寫入word文件中

龙岩龙發表於2024-09-05

步驟一:先安裝tesseract-ocr-w64-setup-5.4.0.20240606 (安裝記得語言包只安裝需要的即可)
步驟二:將安裝目錄新增到系統環境變數中
(網上很多這一步之後就說可以執行程式了其實不然,一直報錯沒有新增到環境變數中)
步驟三:

第四步:可以正常執行啦

==========================================================================================

from PyPDF2 import PdfReader
from docx import Document
import pytesseract
from PIL import Image
import io

def pdf_to_word_with_ocr(pdf_path, word_path):
import os
# 檢查檔案是否存在
if not os.path.exists(pdf_path):
raise FileNotFoundError(f"指定的檔案 {pdf_path} 不存在。")

# 建立Word文件物件
doc = Document()

# 開啟PDF檔案
reader = PdfReader(pdf_path)

# 遍歷PDF中的每一頁
for page_number, page in enumerate(reader.pages):
    # 嘗試提取頁面文字
    text = page.extract_text()
    if text:
        # 如果能直接提取到文字,就新增到Word文件中
        doc.add_paragraph(text)
    else:
        # 如果頁面沒有文字,嘗試使用OCR提取影像中的文字
        images = page.images
        if images:
            for image_index, img in enumerate(images):
                # 將影像資料從PDF中提取出來
                image = Image.open(io.BytesIO(img.data))
                # 使用OCR識別影像中的文字
                ocr_text = pytesseract.image_to_string(image, lang='chi_sim')
                doc.add_paragraph(f"第{page_number+1}頁, 影像{image_index+1}: {ocr_text}")
        else:
            # 如果頁面既沒有文字也沒有影像,新增一個佔位符
            doc.add_paragraph(f"第{page_number+1}頁無文字或影像。")

# 儲存Word文件
doc.save(word_path)

使用函式

pdf_path = '45.pdf'
word_path = 'output.docx'
pdf_to_word_with_ocr(pdf_path, word_path)

相關文章