Spaces:
Sleeping
Sleeping
from transformers import pipeline | |
# 使用 huggingface 上的 pegasus 中文摘要模型 | |
# 如果你在 Hugging Face Space 上執行,可直接用下面這行 | |
summarizer = pipeline( | |
"summarization", | |
model="IDEA-CCNL/Randeng-Pegasus-523M-Summary-Chinese", | |
tokenizer="IDEA-CCNL/Randeng-Pegasus-523M-Summary-Chinese", | |
device=0 # 如果有 GPU,否則設 device=-1 | |
) | |
def 摘要(pdf_純文字): | |
""" | |
中文 PDF 摘要,適用於繁簡體 | |
""" | |
if not pdf_純文字 or len(pdf_純文字.strip()) < 20: | |
return "⚠️ PDF 內容為空或無法解析(可能是掃描檔或圖片)" | |
段落列表 = [p.strip() for p in pdf_純文字.split('\n') if p.strip()] | |
摘要結果 = [] | |
for 段 in 段落列表: | |
# Pegasus 的 max_length 最多 128 | |
if len(段) < 30: | |
continue | |
# 以 400 字切片 | |
for i in range(0, len(段), 400): | |
子段 = 段[i:i+400] | |
try: | |
out = summarizer(子段, max_length=64, min_length=10, do_sample=False) | |
if out and len(out) > 0: | |
摘要結果.append(out[0]['summary_text']) | |
except Exception as e: | |
摘要結果.append(f"(錯誤:{e})") | |
return "\n".join(摘要結果) if 摘要結果 else "⚠️ 沒有找到可摘要的內容!" | |