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