返回顶部
p

paper-bilingualPDF转双语Markdown

将PDF论文转换为双语Markdown。对用户提供PDF URL或本地PDF文件,提取文本转为Markdown,保留图片,逐段插入中文翻译。用于学术论文研读、翻译对比。

作者: admin | 来源: ClawHub
源自
ClawHub
版本
V 1.2.0
安全检测
已通过
96
下载量
免费
免费
0
收藏
概述
安装方式
版本历史

paper-bilingual

Paper Bilingual

将PDF论文转换为中英双语Markdown,保留原文格式和图片,逐段提供中文翻译。

触发条件

用户要求以下操作时使用此skill:

  • - 翻译这篇论文
  • 把PDF转成双语MD
  • 论文中英对照
  • 下载论文转Markdown带翻译
  • 提供PDF URL并要求翻译

输入

支持两种输入方式:

  1. 1. URL输入:PDF的下载链接(http/https开头)
  2. 本地路径:本地PDF文件的绝对或相对路径

处理流程

步骤1:下载PDF

  • - 如果是URL,使用PowerShell下载:
powershell Invoke-WebRequest -Uri URL -OutFile $env:TEMP\paper.pdf
  • - 如果是本地路径,直接使用

步骤2:PDF转Markdown

使用Python + PyMuPDF将PDF转为Markdown并提取图片:

python
import fitz
import os
from PIL import Image

pdf_path = paper.pdf
images_dir = images
figures_dir = figures
os.makedirs(imagesdir, existok=True)
os.makedirs(figuresdir, existok=True)

doc = fitz.open(pdf_path)
pages = []

for page_num, page in enumerate(doc):
# 提取文本
text = page.get_text(text)

# 提取图片
images = []
for imgindex, img in enumerate(page.getimages()):
xref = img[0]
pix = fitz.Pixmap(doc, xref)
if pix.n - pix.alpha > 0: # 跳过透明图片
imgname = fpage{pagenum + 1}img{imgindex}.png
pix.save(os.path.join(imagesdir, imgname))
images.append(img_name)
pix = None

pages.append({text: text, images: images})

步骤3:提取完整图表(推荐方法)

使用整页渲染+坐标裁剪提取完整图表:

python
import fitz
from PIL import Image

pdf_path = paper.pdf
OUTPUT_DIR = figures
os.makedirs(OUTPUTDIR, existok=True)

doc = fitz.open(pdf_path)
fig_count = 0

for page_num in range(len(doc)):
page = doc[page_num]
# 2x缩放渲染页面为高清图片
pix = page.get_pixmap(matrix=fitz.Matrix(2, 2))
img = Image.frombytes(RGB, [pix.width, pix.height], pix.samples)

# 获取页面上的图片对象和位置
images = page.get_images()

for imgindex, imginfo in enumerate(images):
xref = img_info[0]
rects = page.getimagerects(xref)
for rect in rects:
# 缩放坐标 (2x)
x0 = max(0, int(rect.x0 * 2) - 20)
y0 = max(0, int(rect.y0 * 2) - 20)
x1 = min(pix.width, int(rect.x1 * 2) + 20)
y1 = min(pix.height, int(rect.y1 * 2) + 20)

# 过滤太小的图片碎片
if x1 - x0 < 80 or y1 - y0 < 80:
continue

# 裁剪完整图表
cropped = img.crop((x0, y0, x1, y1))
figname = ffigp{pagenum+1}{img_index+1}.png
cropped.save(os.path.join(OUTPUTDIR, figname))
fig_count += 1

print(f提取了 {fig_count} 个图表)

关键点

  • - PDF里的图表可能被拆成多个小图片块(tiles)压缩
  • 直接提取会得到碎片,需要用坐标裁剪方法
  • 先渲染整页,再按图片坐标裁剪,确保图表完整

步骤4:翻译并生成双语MD

输出目录结构

memory/paper-bilingual/
└── YYYY-MM-DD-paper-name/
├── index.md # 双语Markdown
├── images/ # 整页截图(可选)
└── figures/ # 裁剪后的图表

输出格式
markdown

主标题


中文主标题

Section 1

中文标题

原文段落...
中文翻译段落...

原文段落...
中文翻译段落...

规则

  1. 1. 主标题(#):英文后换行加中文
  2. 二级标题(##):英文后换行加中文
  3. 普通段落:原文后直接加翻译
  4. 图片:使用裁剪后的图表 figures/

步骤5:翻译实现

使用当前会话的LLM翻译,逐段调用:

将以下英文翻译成中文,保持自然段落格式:
[段落内容]

步骤6:保存输出

  • - 根据PDF文件名或URL生成输出目录名
  • 保存到:memory/paper-bilingual/YYYY-MM-DD-[论文名]/
  • 清理临时文件

核心原则

  1. 1. 每篇论文一个文件夹:避免不同论文文件冲突
  2. 原文完全保留:图片、代码、公式、表格等与源文件完全一致
  3. 逐段翻译:每段正文后插入该段的中文翻译
  4. 标题翻译:所有级别的标题都需要翻译
  5. 格式一致:翻译采用与原文相同的格式
  6. 完整图表:使用坐标裁剪方法提取完整图表,避免碎片

依赖

  • - Python 3.8+
  • PyMuPDF (pip install pymupdf)
  • Pillow (pip install pillow)
  • LLM翻译(当前会话)

错误处理

  • - URL无效:提示用户检查链接
  • PDF加密:提示需要解密
  • 翻译失败:跳过该段,保留原文

标签

skill ai

通过对话安装

该技能支持在以下平台通过对话安装:

OpenClaw WorkBuddy QClaw Kimi Claude

方式一:安装 SkillHub 和技能

帮我安装 SkillHub 和 paper-bilingual-1775965461 技能

方式二:设置 SkillHub 为优先技能安装源

设置 SkillHub 为我的优先技能安装源,然后帮我安装 paper-bilingual-1775965461 技能

通过命令行安装

skillhub install paper-bilingual-1775965461

下载

⬇ 下载 paper-bilingual v1.2.0(免费)

文件大小: 2.99 KB | 发布时间: 2026-4-13 11:24

v1.2.0 最新 2026-4-13 11:24
No changes detected for version 1.2.0; functionality and usage remain the same.

Archiver·手机版·闲社网·闲社论坛·羊毛社区· 多链控股集团有限公司 · 苏ICP备2025199260号-1

Powered by Discuz! X5.0   © 2024-2025 闲社网·线报更新论坛·羊毛分享社区·http://xianshe.com

p2p_official_large
返回顶部