File size: 4,053 Bytes
f996a9b
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
---
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 點座標,計算旋轉角度、長寬與中心點。