Spaces:
Sleeping
Sleeping
metadata
title: PDF to PPT Converter
emoji: 📄
colorFrom: blue
colorTo: green
sdk: docker
app_port: 7860
PDFtoPPT
這是一個可以將 PDF 或包含文字的圖片轉換成 「可完全編輯的 PowerPoint (.pptx)」 簡報檔的開源工具。
透過結合 easyocr 與 python-pptx,本工具解決了常見的 OCR 轉檔問題:
- 支援傾斜文字:能精準計算文字旋轉角度,並套用於 PPT 的文字方塊上。
- 精確的排版與字體大小:自動將原圖文字區域的大小對應至 PPTX,且將內邊距設為 0,確保生成的文字大小與原始圖片排版一致。
- 無縫替換:使用 OpenCV 的影像修補技術 (Inpainting) 自動將圖片上的原文字抹除,再疊加可編輯的文字方塊,防止文字重疊。
系統需求
- Python 3.8 或以上版本。
- Poppler (用於解析 PDF 檔案)。
1. 安裝系統依賴 (Poppler)
如果您需要轉換 PDF 檔案,系統必須先安裝 poppler:
- Windows:
- 從 Poppler for Windows 下載最新版。
- 解壓縮並將
bin/資料夾路徑加入到系統的環境變數PATH中。
- macOS (Homebrew):
brew install poppler - Linux (Ubuntu/Debian):
sudo apt-get update sudo apt-get install poppler-utils
2. 建立 Python 虛擬環境與安裝套件
建議使用虛擬環境來安裝,避免套件衝突:
# 建立虛擬環境 (可選)
python -m venv venv
# 啟動虛擬環境
# Windows:
venv\Scripts\activate
# macOS/Linux:
source venv/bin/activate
# 安裝必要的 Python 套件
pip install python-pptx easyocr opencv-python-headless pdf2image numpy pillow streamlit
(註:首次執行 easyocr 時,程式會自動從網路下載文字辨識的模型,請耐心等候。)
雲端免費部署 (免安裝)
如果您不想在本地端安裝,您可以將此 GitHub 專案一鍵部署到 Streamlit Community Cloud 或 Hugging Face Spaces 上。
部署到 Streamlit Community Cloud (推薦)
- 將本專案 Fork 或上傳到您自己的 GitHub 儲存庫。
- 前往 Streamlit Community Cloud 並登入。
- 點擊 **"New app"**。
- 選擇您的 GitHub 儲存庫與分支,並在 "Main file path" 填寫
webui.py。 - 點擊 **"Deploy!"**。
- 系統會自動讀取
requirements.txt與packages.txt,並在幾分鐘內為您建立專屬的線上轉換網頁!
本機操作說明
啟動 Web UI (推薦)
我們提供了一個基於 Streamlit 的現代化網頁圖形介面,讓您可以直接在瀏覽器中上傳檔案並下載轉換後的 PPTX。
streamlit run webui.py
啟動後,瀏覽器會自動開啟 http://localhost:8501,您可以在網頁中輕鬆操作。
命令列基本用法
# 轉換 PDF
python convert.py input.pdf
# 轉換單張圖片 (支援 png, jpg, webp)
python convert.py input_image.png
預設情況下,程式會在當前目錄生成一個名為 output.pptx 的檔案。
進階參數設定
# 指定輸出檔名 (-o)
python convert.py input.pdf -o presentation_editable.pptx
# 指定 OCR 辨識語言 (--lang)
# 預設為繁體中文與英文 (ch_tra,en)
# 例如若只要辨識英文與日文:
python convert.py input.pdf --lang en,ja
支援的語言代碼 (部分常見)
ch_tra: 繁體中文ch_sim: 簡體中文en: 英文ja: 日文ko: 韓文
完整的語言代碼請參考 EasyOCR 官方文件。
開發者筆記
本專案包含以下核心腳本:
convert.py: CLI 主程式入口,處理檔案讀取、PDF 拆圖與暫存檔清理。ppt_converter.py: 核心轉換邏輯,包含圖片修補 (Inpainting) 與使用python-pptx建構投影片。ocr_utils.py: 負責處理 EasyOCR 回傳的 4 點座標,計算旋轉角度、長寬與中心點。