AI 应用大模型人工智能【免费下载链接】ChatPaperUse ChatGPT to summarize the arXiv papers. 全流程加速科研利用chatgpt进行论文全文总结专业翻译润色审稿审稿回复项目地址https://gitcode.com/gh_mirrors/ch/ChatPaper点击查看免费下载本篇技术指南以仓库内 scipdf_parser-master/README.md 为骨架结合其源码系统讲解 ChatPaper 项目中的科学论文 PDF 解析组件 SciPDF Parser如何安装依赖、启动 GROBID 服务、调用parse_pdf_to_dict/parse_pdf/parse_figures三个核心 API并深入剖析其底层实现与在 ChatPaper「任意 PDF 全文翻译」流程中的实际调用链。读完本文你将掌握从 PDF 到结构化字典、再到喂给 ChatGPT 进行翻译/总结的完整技术方案。一、SciPDF Parser 是什么ChatPaper 的论文理解前哨ChatPaper 的定位是用 ChatGPT 总结 arXiv 论文全流程加速科研覆盖论文全文总结、专业翻译、润色、审稿与审稿回复。而这一切的起点是把一份二进制 PDF 变成机器可读的结构化文本——这正是 SciPDF Parser 的职责。SciPDF Parser 是一个基于 GROBID 的 Python 科学 PDF 解析器。GROBIDGeneRation Of BIbliographic Data是一个成熟的学术文档结构化抽取引擎负责把论文的版式信息作者、标题、摘要、章节、参考文献、图表、公式还原为 TEI XMLSciPDF Parser 则在其上做了一层 Python 封装将 XML 进一步转换为易于下游程序消费的 Python 字典。仓库中scipdf_parser-master/setup.py的keywords字段PDF parser,GROBID,Python PDF parser与描述 Python parser for scientific PDF based on GROBID 准确概括了它的技术定位。从源码结构看scipdf_parser-master/scipdf/pdf/parse_pdf.py整个包分为两个子模块pdf负责 GROBID 调用与结构化解析和features负责文本统计特征抽取二者统一通过 scipdf_parser-master/scipdf/init.py 导出__all__ [pdf, features]。二、安装从 pip 安装到依赖模型2.1 标准安装方式按 README 说明从仓库安装当前scipdf包的版本号为0.1dev见 setup.py 的version字段pip install githttps://github.com/titipata/scipdf_parser需要注意的是setup.py中声明的核心运行依赖是install_requires[lxml, requests, spacy, pandas, textstat]其中lxml用于解析 GROBID 返回的 XMLrequests用于与 GROBID 服务通信spacy与textstat服务于文本统计特征模块。2.2 必须额外下载的 spaCy 模型README 特别强调还需要为 spaCy 下载en_core_web_sm英文小模型否则 text_utils.py 第 9 行的nlp spacy.load(en_core_web_sm)在模块导入时就会失败python -m spacy download en_core_web_sm仓库根目录的 requirements.txt 中已经锁定了spacy3.5.3以及对应的en-core-web-sm3.5.0 版本依赖可直接沿用。2.3 Java 运行环境被 README 隐含、但 ChatPaper 教程显式要求的依赖SciPDF Parser 本身是纯 Python但两个关键环节依赖 JVMGROBID 服务端是 Java 项目图解析工具 pdffigures2 也是 Java 打包scipdf_parser-master/scipdf/pdf/pdffigures2/pdffigures2-assembly-0.0.12-SNAPSHOT.jar。ChatPaper 主仓库 README.md 的任意 PDF 全文翻译配置教程显式给出了 Java 安装步骤适用于 Ubuntu/MacOSsudo apt-get update sudo apt-get install openjdk-11-jdk java -version # 确认 Java 版本教程推荐 OpenJDK 11如 11.0.19这是运行 GROBID 与 pdffigures2 的前提条件。三、启动 GROBID 服务解析一切的前提3.1 serve_grobid.sh 做了什么README 给出的第一步是运行 serve_grobid.shbash serve_grobid.sh打开该脚本可以看到它只做了两件事按需下载 GROBID脚本顶部声明declare -r GROBID_VERSION0.6.2注释明确提示or change to current stable version即可通过修改这个版本号来测试新版 GROBID若本地不存在grobid-0.6.2目录则用wget下载官方 zip 包并解压启动服务cd grobid-${GROBID_VERSION} ./gradlew run默认监听8070 端口。由于./gradlew run会占用终端ChatPaper 主仓库 README.md 的教程提供了两种实际部署方式# 方式一保持前台运行服务启动后可新开终端继续操作 bash serve_grobid.sh # 方式二后台守护进程运行 nohup bash serve_grobid.sh仓库根目录的 start.sh 也采用了nohup后台启动方式。若使用 Docker 部署Dockerfile 会先设置WORKDIR /app/scipdf_parser-master再安装该目录下的依赖确保解析组件在容器内可用。3.2 服务端点的源码级确认在 parse_pdf.py 中与 GROBID 的通信地址硬编码为GROBID_URL http://localhost:8070当fulltextTrue时请求%s/api/processFulltextDocument否则请求%s/api/processHeaderDocument仅解析头部信息。这意味着只要本地 8070 端口上有 GROBID 服务parse_pdf_to_dict就能工作同时它也支持通过grobid_url参数切换为 GROBID 官方云服务https://cloud.science-miner.com/grobid/这是文档与源码双重确认的合法用法。四、核心 API 之一parse_pdf_to_dict 与结构化输出4.1 基本调用README 给出的最典型用法import scipdf article_dict scipdf.parse_pdf_to_dict(example_data/futoma2017improved.pdf) # 本地 PDF article_dict scipdf.parse_pdf_to_dict(https://www.biorxiv.org/.../463760.full.pdf, as_listFalse) # 直接解析 URL两点需要结合源码说明URL 输入有严格校验。parse_pdf内部先调用validate_url()parse_pdf.py 第 26-39 行判断输入是否为合法 http/https 链接且op.splitext(pdf_path)[-1].lower() .pdf若 URL 不以.pdf结尾会打印 The input URL has to end with.pdf 并返回None输入还支持 bytes。除字符串路径外parse_pdf接受 PDF 字节串直接 POST 给 GROBID第 102-104 行这在需要自行下载 PDF 再解析的场景中很有用仓库当前版本并未包含 README 中提到的example_data目录与示例 PDFfutoma2017improved.pdf读者可用自己的本地 PDF 或任一以.pdf结尾的在线论文链接替代。4.2 完整输出字典结构原样继承自 README{ title: Proceedings of Machine Learning for Healthcare, abstract: ..., sections: [ {heading: ..., text: ...}, {heading: ..., text: ...}, ... ], references: [ {title: ..., year: ..., journal: ..., author: ...}, ... ], figures: [ {figure_label: ..., figure_type: ..., figure_id: ..., figure_caption: ..., figure_data: ...}, ... ], doi: ... }4.3 输出字典的源码级扩展说明对照convert_article_soup_to_dictparse_pdf.py 第 315-366 行实际返回的字典字段比 README 列出的更丰富共 9 个键字段来源函数说明title直接解析取 TEI 中typemain的 title 节点authorsparse_authors由 forename/middle/surname 拼接分号分隔pub_dateparse_date取publicationStmt中 date 节点的when属性abstractparse_abstract遍历 abstract 下所有段落文本拼接sectionsparse_sections每节含heading、text以及源码额外加入的n_publication_ref本节约稿引用数与n_figure_ref本节约图引用数由calculate_number_of_references统计referencesparse_references每条含title、journal无期刊时回退到publisher、year、authorsfiguresparse_figure_caption每条含figure_label、figure_typefigure/table、figure_id、figure_caption、figure_data表格时为表格文本formulasparse_formulas公式的formula_id、formula_text、formula_coordinates坐标转 float 列表doi直接解析取typeDOI的 idno 节点也就是说README 中展示的结构是简化示意真实输出还包含作者、发表时间、公式坐标与每节引用计数等额外字段这在二次开发如生成论文综述、统计引用密度时都是现成的特征。4.4 参数说明源自函数签名与 docstringparse_pdf_to_dict与底层parse_pdf共享以下关键参数fulltext: bool True是否解析全文设为False只解析论文头部对应 GROBID 的processHeaderDocument端点soup: bool True内部以 BeautifulSoup 对象传递parse_pdf_to_dict固定为 Trueparse_pdf可切换为返回原始 XML 文本as_list: bool False为True时sections中每个text由整段拼接字符串变为段落字符串列表便于按段落粒度做翻译或摘要切分return_coordinates: bool True是否向 GROBID 请求坐标信息对应请求表单中的 5 个teiCoordinates字段persName、figure、ref、formula、biblStructgrobid_url: str GROBID_URLGROBID 服务地址默认http://localhost:8070。五、核心 API 之二parse_pdf 返回原生 XML当需要绕过结构化转换、直接拿原始标注结果时README 给出了xml scipdf.parse_pdf(example_data/futoma2017improved.pdf, soupTrue)parse_pdf返回两种形态soupFalse时返回 GROBID 返回的 TEI XML 文本soupTrue时用BeautifulSoup(parsed_article, lxml)包装为可遍历对象。它是parse_pdf_to_dict的底层基础——后者拿到 soup 后再经convert_article_soup_to_dict完成字段抽取。需要自定义解析规则比如抽取参考文献的 DOI、抽取脚注时直接使用parse_pdf(soupTrue)更为灵活。六、核心 API 之三parse_figures 用 pdffigures2 提取图表README 中图解析用法scipdf.parse_figures(example_data, output_folderfigures) # 文件夹内只能放 PDFparse_figuresparse_pdf.py 第 404-455 行的实现在底层调用了 AllenAI 的pdffigures2工具仓库已内置其打包产物scipdf_parser-master/scipdf/pdf/pdffigures2/pdffigures2-assembly-0.0.12-SNAPSHOT.jarsetup.py中通过package_data保证该 jar 随包分发。执行流程自动创建output_folder/data解析出的图表元数据 JSON与output_folder/figures裁剪出的图片两个子目录通过subprocess.run执行java -jar jar_path pdf_folder -i resolution -d data_path -m figure_path输出目录结构为output_folder/data/与output_folder/figures/。函数签名中的默认参数值得注意resolution: int 300输出图片分辨率 DPI、jar_path默认指向内置 jar、output_folder: str figures。该功能强依赖 Java 环境与 2.3 节的 Java 安装要求直接对应。七、深入底层GROBID 通信与请求构造细节为了更透彻地理解该组件我们可以拆解parse_pdf的请求链路parse_pdf.py 第 42-110 行if fulltext: url %s/api/processFulltextDocument % grobid_url else: url %s/api/processHeaderDocument % grobid_url files [] if return_coordinates: files [ (teiCoordinates, (None, persName)), (teiCoordinates, (None, figure)), (teiCoordinates, (None, ref)), (teiCoordinates, (None, formula)), (teiCoordinates, (None, biblStruct)), ]随后根据输入类型URL / 本地文件 / bytes分别构造requests.post(url, files{input: ...})将 PDF 内容作为 multipart 表单字段input上传。因此整个解析链路是PDF (本地路径 / .pdf 结尾的 URL / bytes) → 校验输入类型 (validate_url / os.path.exists) → HTTP POST 到 GROBID 的 processFulltextDocument 或 processHeaderDocument 端点 → 返回 TEI XML可选附带坐标标注 → BeautifulSoup(lxml) 解析 → convert_article_soup_to_dict 抽取 9 类结构化字段八、features 模块解析结果之上的统计特征scipdf_parser-master/scipdf/features/text_utils.py 是 README 未展开、但属于scipdf包官方导出能力from scipdf.features.text_utils import *的配套模块提供四类文本统计工具compute_readability_stats(text)基于textstat计算 13 项可读性指标如flesch_reading_ease、smog、flesch_kincaid_grade、coleman_liau_index、automated_readability_index、dale_chall、difficult_words、gunning_fog、n_syllable等compute_text_stats(text)基于 spaCy 抽取词性分布pos/pos_tag、词形word_shape、词数、句数、动词数、数字占比、平均句长等compute_journal_features(article)直接消费第 4.3 节的结构化字典统计引用总数、唯一期刊数、引用年份的均值/中位数/最小/最大年份被过滤在 1800-2100 范围内以剔除异常值merge_section_list(section_list)利用内置的SECTIONS_MAPS字典含INTRODUCTION→Introduction、MATERIALS AND METHODS→Methods、RESULTS→Results等 20 余条映射把自由格式的章节标题归一化为标准章节名可用于跨论文的章节对齐分析。该模块暗示了 SciPDF Parser 的设计意图它不仅服务于读 PDF还能为论文质量的自动评估如摘要可读性、引用规范度提供特征输入。九、在 ChatPaper 中的实际应用任意 PDF 全文翻译链路SciPDF Parser 在 ChatPaper 中并非孤立组件而是PDF 翻译/总结流水线的第一环。主仓库 README.md 的任意 PDF 全文翻译配置教程给出了完整落地步骤适用于 Ubuntu/MacOS以 Ubuntu 18.04/20.04 为例安装 ChatPaper 默认依赖并激活虚拟环境进入scipdf_parser-master目录安装该目录下 requirements.txt 中的依赖含lxml、beautifulsoup4、spacy、PyMuPDF、openai、tenacity、tiktoken等安装 Java 环境OpenJDK 11sudo apt-get install openjdk-11-jdkjava -version验证启动 GROBID 服务bash serve_grobid.sh或nohup bash serve_grobid.sh后台运行新开终端运行python chat_summary.pyREADME 原文标注对应翻译/总结入口脚本。代码层面的调用证据在 chat_translate.py 中清晰可见。其parse_pdf(path)函数直接复用本文第 4 节的 APIimport scipdf def parse_pdf(path): try: pdf scipdf.parse_pdf_to_dict(path, as_listFalse) pdf[authors] pdf[authors].split(; ) pdf[section_names] [it[heading] for it in pdf[sections]] pdf[section_texts] [it[text] for it in pdf[sections]] except Exception as e: print(parse_pdf_to_dict(path:, e) return pdf随后main()依次执行领域判断chat_check_domain→ 标题翻译 → 摘要翻译 → 逐章节翻译并在写 Markdown 时用正则([^\\n])##([^\\n]{1,18}\W)修正标题换行格式。整个过程消耗的 token 会被累计并打印。这就是 ChatPaper「输入一篇 PDF输出一份双语 Markdown」的核心链路本地/在线 PDF → GROBID 服务(8070) → scipdf.parse_pdf_to_dict() → 标题摘要定领域 → ChatGPT 逐节翻译/总结 → 生成 .md 文件十、常见问题与使用注意事项GROBID 未启动parse_pdf_to_dict会因连接localhost:8070失败而异常务必先执行bash serve_grobid.sh并等待服务就绪首次运行需要下载 GROBID 0.6.2 与大量依赖耗时较长spaCy 模型缺失导入scipdf包即触发spacy.load(en_core_web_sm)未下载模型会直接报错需先执行python -m spacy download en_core_web_smURL 必须以 .pdf 结尾validate_url会拒绝不带.pdf后缀的在线链接返回None解析不了时检查输入类型parse_pdf对非字符串、非 bytes、且op.exists为 False 的输入一律返回Noneparse_pdf_to_dict随之返回None调用方需自行判空ChatPaper 的parse_pdf已用 try/except 包裹换 GROBID 版本修改 serve_grobid.sh 顶部的GROBID_VERSION常量即可测试新版解析效果图解析强依赖 Javaparse_figures需要可用的java命令且输入目录内应只放 PDF 文件输出会写入output_folder/data与output_folder/figures两个子目录解析失败可降级为只解析头部将fulltextFalse传给parse_pdf_to_dict可仅请求头部端点作为快速元数据提取方案。结语SciPDF Parser 是 ChatPaper 科研自动化流水线的地基GROBID 负责读懂版式parse_pdf.py负责抽出结构text_utils.py负责量化文本最终由chat_translate.py把结构化论文交给 ChatGPT 完成翻译、总结与审稿。无论你是想复现 ChatPaper 的整条翻译链路还是需要为自己的科研工具链接入一个可靠的 PDF 结构化解析组件本文覆盖的安装步骤、三个核心 API、输出字典字段与源码调用关系都可以直接作为上手与二次开发的依据。进一步的实现细节可继续阅读 parse_pdf.py、serve_grobid.sh 与 text_utils.py 的完整源码。赞分享AI 应用大模型人工智能【免费下载链接】ChatPaperUse ChatGPT to summarize the arXiv papers. 全流程加速科研利用chatgpt进行论文全文总结专业翻译润色审稿审稿回复项目地址https://gitcode.com/gh_mirrors/ch/ChatPaper点击查看免费下载相关推荐YouTube.js Parser 命名空间深度解析InnerTube 响应解析引擎的 API 全景与源码级原理YouTube.js Parser 命名空间深度解析InnerTube 响应解析引擎的 API 全景与源码级原理 导读 本文围绕 YouTube.js 中 P后端AWX 开源项目全解析基于 Ansible 的 Web UI、REST API 与任务引擎AWX 开源项目全解析基于 Ansible 的 Web UI、REST API 与任务引擎 AWX 是构建在 Ansible 之上的开源自动化管理平台为 R后端运维任务调度CC Switch Codex 接 Claude 模型实战Anthropic Messages 上游本地路由详解CC Switch Codex 接 Claude 模型实战Anthropic Messages 上游本地路由详解 本篇指南面向 CC Switch 3.17.后端前端企业应用运维网络安全上一篇IronyModManager终极指南快速解决Paradox游戏模组冲突的完整教程下一篇三步掌握微信聊天数据主权WeChatMsg完整导出与智能分析终极指南创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考