pdf2ppt-api / README.md
Nanny7's picture
feat: restructure for Hugging Face Spaces deployment
f996a9b
|
Raw
History Blame Contribute Delete
4.05 kB
---
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 點座標,計算旋轉角度、長寬與中心點。