tbdavid2019 commited on
Commit
f376cb2
·
1 Parent(s): 62f78a2

🚀 重大重構版本 v2.0.0

Browse files

核心改進:
- 🏗️ 模組化架構:拆分 prompts.py, quality_control.py, content_planner.py
- 🎯 解決文稿斷裂:提升 max_tokens 至 65536,智能截斷檢測
- 📝 新增摘要功能:博客式摘要 + 極簡摘要,專為 podcast 上架設計
- 🎨 簡化介面:隱藏複雜提示詞,專注核心功能
- ⚙️ 參數化設計:可調整輸出 token 限制,適配不同模型
- 🔧 現代化提示詞:採用簡潔高效的 AI 最佳實踐
- 📊 智能品質控制:全局品質檢查,分批生成備用機制

技術優化:
- 支援 Gemini Flash 2.5 (65536 tokens)
- 智能內容規劃和主題導向分段
- 向後兼容性保證
- 完整的錯誤處理和重試機制

Files changed (1) hide show
  1. README.md +193 -45
README.md CHANGED
@@ -21,29 +21,78 @@ pinned: false
21
  short_description: 原tbdavid2019/PDF2podcast拆出的劇本生成(1)
22
  ---
23
 
24
- # PDF2Podcast 腳本生成器
25
 
26
  PDF2Podcast 是一個強大的文件轉換工具,能夠將 PDF、TXT 和 EPUB 檔案轉換成生動的對話腳本。此工具特別適合創建 podcast、講座、教學內容或摘要,透過大型語言模型 (LLM) 將靜態文字轉換為引人入勝的對話或演講稿。
27
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
28
  ## 功能特點
29
 
30
  - **多種檔案格式支援**:可處理 PDF、TXT 和 EPUB 檔案
31
- - **多種輸出模板**:
32
  - Podcast 對話(兩位主持人 David 和 Cordelia)
 
33
  - 科學材料發現摘要(教授與學生對話)
34
  - 講座腳本(單一演講者)
35
- - 一般摘要(約 1024 字)
36
- - 簡短摘要(約 256 字)
37
- - **自定義提示詞**:可完全自定義所有提示詞模板
38
  - **彈性 API 整合**:支援 OpenAI API 及其他相容的 API 端點
39
  - **模型選擇**:可從連接的 API 獲取並選擇可用的語言模型
40
  - **繁體中文輸出**:預設生成繁體中文腳本
41
- - **友善的使用者介面**:基於 Gradio 的直觀操作界面
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
42
 
43
  ## 安裝指南
44
 
45
  ### 前置需求
46
-
47
  - Python 3.7 或更高版本
48
  - pip 套件管理器
49
 
@@ -51,8 +100,8 @@ PDF2Podcast 是一個強大的文件轉換工具,能夠將 PDF、TXT 和 EPUB
51
 
52
  1. 複製此專案到本地:
53
  ```bash
54
- git clone https://github.com/yourusername/PDF2podcast.git
55
- cd PDF2podcast
56
  ```
57
 
58
  2. 安裝所需依賴:
@@ -68,68 +117,167 @@ PDF2Podcast 是一個強大的文件轉換工具,能夠將 PDF、TXT 和 EPUB
68
 
69
  ## 使用方法
70
 
71
- 1. 啟動應用程式:
 
 
72
  ```bash
73
  python app.py
74
  ```
75
 
76
- 2. 在瀏覽器中開啟顯示的 URL(通常是 http://127.0.0.1:7860)
77
-
78
- 3. 上傳您想要轉換的檔案(PDF、TXT 或 EPUB)
79
-
80
- 4. 設定 API 參數:
81
- - 輸入 API Base URL(預設為 https://gemini.david888.com/v1)
82
  - 輸入您的 LLM API 金鑰
83
  - 點擊「獲取模型列表」按鈕
84
 
85
- 5. 選擇提示詞模板或自定義提示詞
 
 
 
 
 
 
 
 
 
86
 
87
- 6. 點擊「生成腳本」按鈕
 
 
88
 
89
- 7. 複製或下載生成的腳本
 
 
 
 
 
 
 
 
 
 
90
 
91
  ## 提示詞模板說明
92
 
93
- ### Podcast 模板
94
- 生成兩位主持人(David 和 Cordelia)之間的對話,適合製作 podcast 節目。對話風格模仿 All-In-Podcast,內容豐富且互動性強。
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
95
 
96
- ### SciAgents 材料發現摘要
97
- 生成教授與學生之間的對話,專注於描述新材料的特性和發現。教授的風格類似理查德·費曼,深入淺出地解釋複雜概念。
 
 
 
98
 
99
- ### 講座模板
100
- 生成單一演講者的講座腳本,風格類似理查德·費曼教授,適合教學或演講場合。
 
 
101
 
102
- ### 摘要模板
103
- 生成約 1024 字的內容摘要,保留原文的關鍵點和重要概念。
104
 
105
- ### 簡短摘要模板
106
- 生成約 256 字的簡潔摘要,適合快速了解文件內容。
107
 
108
- ## 自定義選項
 
 
 
109
 
110
- 您可以自定義以下提示詞部分:
111
- - **介紹提示詞**:設定整體任務和風格
112
- - **文本分析提示詞**:指導如何分析輸入文本
113
- - **腦力激盪提示詞**:引導創意思考過程
114
- - **前導提示詞**:設定對話或講座的開場
115
- - **對話提示詞**:定義對話的結構和風格
116
- - **自定義提示詞**:添加額外的特定指令
117
 
118
- ## 依賴套件
 
 
 
119
 
120
- 主要依賴套件包括:
121
- - gradio:用於創建 Web 介面
122
- - pymupdf:用於 PDF 文件處理
123
- - ebooklib:用於 EPUB 文件處理
124
- - beautifulsoup4:用於 HTML 內容解析
125
- - requests:用於 API 通訊
126
- - python-dotenv:用於環境變數管理
 
 
 
 
 
 
 
 
 
 
 
 
 
127
 
128
  完整依賴列表請參見 `requirements.txt` 檔案。
129
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
130
  ## 注意事項
131
 
132
  - 處理大型檔案可能需要較長時間
133
  - API 使用可能會產生費用,請查閱您使用的 API 提供商的計費政策
134
  - 生成的內容質量取決於所選模型和提供的提示詞
 
135
 
 
21
  short_description: 原tbdavid2019/PDF2podcast拆出的劇本生成(1)
22
  ---
23
 
24
+ # PDF2Podcast 腳本生成器 (重構版)
25
 
26
  PDF2Podcast 是一個強大的文件轉換工具,能夠將 PDF、TXT 和 EPUB 檔案轉換成生動的對話腳本。此工具特別適合創建 podcast、講座、教學內容或摘要,透過大型語言模型 (LLM) 將靜態文字轉換為引人入勝的對話或演講稿。
27
 
28
+ ## 🚀 最新更新 (2025-10-02)
29
+
30
+ ### 重大架構重構
31
+ - **模組化設計**:將原本複雜的單一檔案拆分為多個專業模組
32
+ - `prompts.py`:現代化提示詞管理,採用簡潔高效的設計
33
+ - `quality_control.py`:對話品質檢查和連貫性驗證
34
+ - `content_planner.py`:智能內容規劃和主題導向分段
35
+ - **簡化提示詞**:摒棄複雜的多段式提示詞,採用現代 AI 系統最佳實踐
36
+
37
+ ### 核心功能優化
38
+ - **解決文稿斷裂問題**:
39
+ - 大幅提升 `max_tokens` 至 65,536 (支援 Gemini Flash 2.5)
40
+ - 智能截斷檢測,自動啟用分批生成備用機制
41
+ - 品質檢查針對完整文稿進行,而非逐批檢查
42
+ - **可調整參數**:
43
+ - 最大輸出 Token 數可調整 (1,024 - 131,072)
44
+ - 最大輸入文本長度可調整 (50,000 - 2,000,000 字符)
45
+ - 適配不同模型的限制 (Gemini: 65536, GPT-4: 4096, Claude: 8192)
46
+
47
+ ### 全新摘要功能 📝
48
+ - **Podcast Summary 生成**:專為 podcast 上架準備
49
+ - **博客式摘要**:適合搜索引擎收錄的 Markdown 格式文章
50
+ - **極簡摘要**:200 字以內的節目介紹,適合平台描述
51
+ - **一鍵生成**:從腳本直接生成多種格式的摘要內容
52
+
53
+ ### 介面優化
54
+ - **簡化設計**:隱藏複雜的多段式提示詞欄位
55
+ - **專注核心**:保留模板選擇和自定義提示詞功能
56
+ - **雙輸出區域**:腳本生成 + 摘要生成並行操作
57
+
58
  ## 功能特點
59
 
60
  - **多種檔案格式支援**:可處理 PDF、TXT 和 EPUB 檔案
61
+ - **現代化模板系統**:
62
  - Podcast 對話(兩位主持人 David 和 Cordelia)
63
+ - 單人播客獨白
64
  - 科學材料發現摘要(教授與學生對話)
65
  - 講座腳本(單一演講者)
66
+ - 一般摘要和簡短摘要
67
+ - **新增**:博客式摘要和極簡摘要
68
+ - **智能品質控制**:自動檢測對話品質和連貫性
69
  - **彈性 API 整合**:支援 OpenAI API 及其他相容的 API 端點
70
  - **模型選擇**:可從連接的 API 獲取並選擇可用的語言模型
71
  - **繁體中文輸出**:預設生成繁體中文腳本
72
+ - **現代化介面**:基於 Gradio 的直觀操作界面
73
+
74
+ ## 技術架構
75
+
76
+ ### 核心模組
77
+ ```
78
+ PDF2podcast-1-script/
79
+ ├── app.py # 主應用程式 (Gradio 介面)
80
+ ├── prompts.py # 現代化提示詞管理
81
+ ├── quality_control.py # 品質檢查系統
82
+ ├── content_planner.py # 內容規劃器
83
+ ├── requirements.txt # 依賴清單
84
+ └── README.md # 專案說明
85
+ ```
86
+
87
+ ### 提示詞設計原則
88
+ - **簡潔高效**:摒棄複雜的多段式設計
89
+ - **現代化**:採用最新 AI 系統最佳實踐
90
+ - **可擴展**:易於添加新模板和自定義內容
91
+ - **向後兼容**:保持與舊版本的相容性
92
 
93
  ## 安裝指南
94
 
95
  ### 前置需求
 
96
  - Python 3.7 或更高版本
97
  - pip 套件管理器
98
 
 
100
 
101
  1. 複製此專案到本地:
102
  ```bash
103
+ git clone https://github.com/tbdavid2019/PDF2podcast-1-script.git
104
+ cd PDF2podcast-1-script
105
  ```
106
 
107
  2. 安裝所需依賴:
 
117
 
118
  ## 使用方法
119
 
120
+ ### 基本操作流程
121
+
122
+ 1. **啟動應用程式**:
123
  ```bash
124
  python app.py
125
  ```
126
 
127
+ 2. **設定 API 參數**:
128
+ - 輸入 API Base URL(預設為 Gemini API)
 
 
 
 
129
  - 輸入您的 LLM API 金鑰
130
  - 點擊「獲取模型列表」按鈕
131
 
132
+ 3. **上傳文件**:支援 PDF、TXT 或 EPUB 格式
133
+
134
+ 4. **選擇模板**:從下拉選單選擇適合的提示詞模板
135
+
136
+ 5. **調整參數**:
137
+ - 最大輸出 Token 數 (建議 Gemini: 65536)
138
+ - 最大輸入文本長度
139
+ - 分批生成部分數量 (通常設為 1)
140
+
141
+ 6. **生成腳本**:點擊「生成腳本」按鈕
142
 
143
+ 7. **生成摘要**:
144
+ - 選擇摘要類型(博客式 / 極簡)
145
+ - 點擊「生成摘要」按鈕
146
 
147
+ ### 進階功能
148
+
149
+ #### 自定義提示詞
150
+ - 在「自定義提示詞」欄位添加特殊要求
151
+ - 系統會自動將其整合到主要提示詞中
152
+
153
+ #### 模型適配建議
154
+ - **Gemini Flash 2.5**: max_tokens = 65536 (推薦)
155
+ - **GPT-4**: max_tokens = 4096
156
+ - **Claude**: max_tokens = 8192
157
+ - **其他模型**: 請參考官方文檔
158
 
159
  ## 提示詞模板說明
160
 
161
+ ### 主要模板
162
+
163
+ #### Podcast 模板 (推薦)
164
+ 生成兩位主持人(David 和 Cordelia)之間的對話:
165
+ - 開場:「歡迎收聽 David888 Podcast,我是 David...」
166
+ - 風格:類似 All-In-Podcast,輕鬆專業
167
+ - 長度:50-200 輪對話,根據內容自動調整
168
+
169
+ #### 單人播客模板
170
+ 生成單一主持人的播客獨白:
171
+ - 風格親切專業,適合深度講解
172
+ - 內容豐富且易懂
173
+
174
+ #### 摘要模板 (新增)
175
+ - **博客式摘要**:適合 SEO 的 Markdown 格式文章
176
+ - **極簡摘要**:200 字以內的節目介紹
177
+
178
+ ### 科學專用模板
179
+ - **SciAgents 材料發現**:專門介紹 AI 材料發現成果
180
+ - **講座模板**:費曼風格的教學內容
181
+
182
+ ## 品質控制系統
183
 
184
+ ### 自動檢測功能
185
+ - **截斷檢測**:智能識別內容是否被提前截斷
186
+ - **連貫性檢查**:驗證對話的邏輯一致性
187
+ - **格式驗證**:確保 speaker-1/speaker-2 格式正確
188
+ - **品質評分**:提供整體品質評估 (0-100分)
189
 
190
+ ### 備用機制
191
+ - 當單次生成被截斷時,自動啟用分批生成
192
+ - 智能內容規劃,確保主題連貫性
193
+ - 全局品質檢查,而非逐批檢查
194
 
195
+ ## 故障排除
 
196
 
197
+ ### 常見問題
 
198
 
199
+ #### 文稿被截斷
200
+ - **解決方案**:提高 max_tokens 設定至模型支援上限
201
+ - **Gemini Flash 2.5**: 可設定至 65536
202
+ - **自動備用**:系統會自動偵測並啟用分批生成
203
 
204
+ #### API 連接問題
205
+ - 檢查 API 金鑰是否正確
206
+ - 確認 API Base URL 格式
207
+ - 查看錯誤日誌獲取詳細資訊
 
 
 
208
 
209
+ #### 品質評分偏低
210
+ - 檢查原始內容品質
211
+ - 考慮調整提示詞模板
212
+ - 嘗試不同的 temperature 設定
213
 
214
+ ## 技術規格
215
+
216
+ ### 支援的模型
217
+ - **推薦**: Gemini Flash 2.5 (65536 tokens)
218
+ - **相容**: OpenAI GPT 系列、Claude、其他 OpenAI API 相容模型
219
+
220
+ ### 效能規格
221
+ - **最大輸入**: 2,000,000 字符
222
+ - **最大輸出**: 131,072 tokens (視模型而定)
223
+ - **處理速度**: 視模型 API 回應時間而定
224
+ - **記憶體需求**: 約 500MB (含依賴)
225
+
226
+ ### 依賴套件
227
+ 主要依賴套件:
228
+ - gradio:Web 介面框架
229
+ - pymupdf:PDF 文件處理
230
+ - ebooklib:EPUB 文件處理
231
+ - beautifulsoup4:HTML 內容解析
232
+ - requests:API 通訊
233
+ - python-dotenv:環境變數管理
234
 
235
  完整依賴列表請參見 `requirements.txt` 檔案。
236
 
237
+ ## 版本歷史
238
+
239
+ ### v2.0.0 (2025-10-02) - 重構版
240
+ - 🎯 **重大重構**:模組化架構,分離關注點
241
+ - 🚀 **解決斷裂**:提升 token 限制,修復文稿截斷問題
242
+ - 📝 **新增摘要**:Podcast 上架專用的摘要生成功能
243
+ - 🎨 **介面優化**:簡化複雜設定,專注核心功能
244
+ - ⚙️ **參數化**:可調整輸出 token 限制,適配不同模型
245
+ - 🔧 **品質提升**:智能品質檢查和截斷偵測
246
+
247
+ ### v1.x - 初始版本
248
+ - 基本的 PDF/EPUB 轉 Podcast 功能
249
+ - 複雜的多段式提示詞設計
250
+ - 固定的 token 限制
251
+
252
+ ## 貢獻指南
253
+
254
+ 歡迎提交 Issues 和 Pull Requests!
255
+
256
+ ### 開發環境設置
257
+ 1. Fork 此專案
258
+ 2. 創建功能分支:`git checkout -b feature/新功能`
259
+ 3. 提交變更:`git commit -am '添加新功能'`
260
+ 4. 推送分支:`git push origin feature/新功能`
261
+ 5. 創建 Pull Request
262
+
263
+ ### 程式碼規範
264
+ - 使用 Python PEP 8 風格
265
+ - ���加適當的註釋和文檔字符串
266
+ - 確保向後相容性
267
+
268
+ ## 授權條款
269
+
270
+ [在此添加授權資訊]
271
+
272
+ ## 聯絡資訊
273
+
274
+ - GitHub: https://github.com/tbdavid2019/PDF2podcast-1-script
275
+ - Issues: https://github.com/tbdavid2019/PDF2podcast-1-script/issues
276
+
277
  ## 注意事項
278
 
279
  - 處理大型檔案可能需要較長時間
280
  - API 使用可能會產生費用,請查閱您使用的 API 提供商的計費政策
281
  - 生成的內容質量取決於所選模型和提供的提示詞
282
+ - 建議在生產環境使用前進行充分測試
283