ExtractStructuredDatafromScientificPDFs extract-from-pdfs

这个技能用于从科学PDF文献中提取标准化、结构化的数据,将PDF集合转换为经过验证的数据库,以便在Python、R或其他框架中进行统计分析。核心能力包括组织元数据、按摘要过滤论文、从PDF中提取结构化数据、自动修复和验证JSON输出、用外部数据库丰富数据以及计算质量保证的精确度/召回率指标。

数据分析 0 次安装 0 次浏览 更新于 3/2/2026

从科学PDF中提取结构化数据

目的

使用Claude的视觉能力从科学PDF文献中提取标准化、结构化的数据。将PDF集合转换为经过验证的数据库,以便在Python、R或其他框架中进行统计分析。

核心能力:

  • 从BibTeX、RIS、目录或DOI列表中组织元数据
  • 使用Claude(Haiku/Sonnet)或本地模型(Ollama)按摘要过滤论文
  • 使用可定制的模式从PDF中提取结构化数据
  • 自动修复和验证JSON输出
  • 用外部数据库(GBIF、WFO、GeoNames、PubChem、NCBI)丰富数据
  • 计算质量保证的精确度/召回率指标
  • 导出到Python、R、CSV、Excel或SQLite

使用此技能时

使用时:

  • 进行需要数据提取的系统文献综述
  • 从科学出版物中构建数据库
  • 将PDF集合转换为结构化数据集
  • 使用真实度量标准验证提取质量
  • 比较提取方法(不同模型、提示)

不使用时:

  • 单个PDF摘要(使用基本PDF阅读代替)
  • 全文PDF搜索(使用文档搜索工具)
  • PDF编辑或操作

开始使用

1. 初始设置

阅读安装和配置的设置指南:

cat references/setup_guide.md

关键设置步骤:

  • 安装依赖项:conda env create -f environment.yml
  • 设置API密钥:export ANTHROPIC_API_KEY='your-key'
  • 可选:安装Ollama进行免费本地过滤

2. 定义提取要求

询问用户:

  • 研究领域和提取目标
  • PDF如何组织(参考管理器、目录、DOI列表)
  • 大约的集合大小
  • 首选的分析环境(Python、R等)

提供2-3个示例PDF以分析结构和设计模式。

3. 设计提取模式

从模板创建自定义模式:

cp assets/schema_template.json my_schema.json

为特定领域定制:

  • 设置objective描述要提取的内容
  • 定义output_schema字段类型和描述
  • 添加特定领域的instructions以供Claude使用
  • 提供output_example显示所需的格式

查看assets/example_flower_visitors_schema.json以获取现实生态学示例。

工作流执行

完整的管道

运行6步管道(加上可选验证):

# 第1步:组织元数据
python scripts/01_organize_metadata.py \
  --source-type bibtex \
  --source library.bib \
  --pdf-dir pdfs/ \
  --output metadata.json

# 第2步:过滤论文(可选 - 推荐)
# 选择后端:anthropic-haiku(便宜)、anthropic-sonnet(准确)、ollama(免费)
python scripts/02_filter_abstracts.py \
  --metadata metadata.json \
  --backend anthropic-haiku \
  --use-batches \
  --output filtered_papers.json

# 第3步:从PDF中提取
python scripts/03_extract_from_pdfs.py \
  --metadata filtered_papers.json \
  --schema my_schema.json \
  --method batches \
  --output extracted_data.json

# 第4步:修复JSON
python scripts/04_repair_json.py \
  --input extracted_data.json \
  --schema my_schema.json \
  --output cleaned_data.json

# 第5步:使用API验证
python scripts/05_validate_with_apis.py \
  --input cleaned_data.json \
  --apis my_api_config.json \
  --output validated_data.json

# 第6步:导出到分析格式
python scripts/06_export_database.py \
  --input validated_data.json \
  --format python \
  --output results

验证(可选但推荐)

计算提取质量指标:

# 第7步:为注释准备样本论文
python scripts/07_prepare_validation_set.py \
  --extraction-results cleaned_data.json \
  --schema my_schema.json \
  --sample-size 20 \
  --strategy stratified \
  --output validation_set.json

# 第8步:手动注释(编辑validation_set.json)
# 为每个抽样的论文填写ground_truth字段

# 第9步:计算指标
python scripts/08_calculate_validation_metrics.py \
  --annotations validation_set.json \
  --output validation_metrics.json \
  --report validation_report.txt

验证产生每个字段的精确度、召回率和F1指标以及总体指标。

详细文档

references/目录中访问综合指南:

设置和安装:

cat references/setup_guide.md

带示例的完整工作流:

cat references/workflow_guide.md

验证方法:

cat references/validation_guide.md

API集成细节:

cat references/api_reference.md

自定义

模式自定义

修改my_schema.json以匹配研究领域:

  1. Objective: 描述要提取的数据
  2. Instructions: 提取指导步骤
  3. Output schema: 定义结构的JSON模式
  4. Important notes: 特定领域的规则
  5. Examples: 显示期望的输出格式

在指令中使用命令性语言。对数据类型、必填与可选字段以及边缘情况进行具体说明。

API配置

my_api_config.json中配置外部数据库验证:

将提取的字段映射到验证API:

  • gbif_taxonomy - 生物分类学
  • wfo_plants - 特定植物名称
  • geonames - 地理位置
  • geocode - 地址到坐标
  • pubchem - 化学化合物
  • ncbi_gene - 基因标识符

查看assets/example_api_config_ecology.json以获取生态学特定示例。

过滤自定义

scripts/02_filter_abstracts.py(第74行)中编辑过滤标准:

替换TODO部分与特定领域的标准:

  • 什么构成主要数据与综述?
  • 哪些数据类型相关?
  • 需要什么范围(地理、时间、分类)?

使用保守标准(如果不确定,包括论文)以避免假阴性。

成本优化

过滤的后端选择(第2步):

  • Ollama(本地):$0 - 最适合隐私和高容量
  • Haiku(API):~$0.25/M令牌 - 成本/质量的最佳平衡
  • Sonnet(API):~$3/M令牌 - 最适合复杂过滤

100篇论文的典型成本:

  • 带过滤(Haiku + Sonnet):~$4
  • 带本地Ollama + Sonnet:~$3.75
  • 不带过滤(仅Sonnet):~$7.50

优化策略:

  • 使用摘要过滤减少PDF处理
  • 使用本地Ollama进行过滤(免费)
  • 启用提示缓存--use-caching
  • 使用--use-batches批量处理

质量保证

验证工作流提供:

  • 精确度:提取项目中正确的百分比
  • 召回率:提取的真实项目百分比
  • F1分数:精确度和召回率的调和平均数
  • 每个字段的指标:识别薄弱字段

使用指标:

  • 建立基线提取质量
  • 比较不同方法(模型、提示、模式)
  • 识别改进领域
  • 在出版物中报告提取质量

推荐的样本大小:

  • 小型项目(<100篇论文):10-20篇论文
  • 中型项目(100-500篇论文):20-50篇论文
  • 大型项目(>500篇论文):50-100篇论文

迭代改进

  1. 使用基线模式进行初始提取
  2. 使用步骤7-9对样本进行验证
  3. 分析字段级指标和错误模式
  4. 修订模式、提示或模型选择
  5. 重新提取和验证
  6. 比较指标以验证改进
  7. 重复直到达到可接受的质量

查看references/validation_guide.md以获取有关解释指标和提高提取质量的详细指导。

可用脚本

数据组织:

  • scripts/01_organize_metadata.py - 标准化PDF和元数据

过滤:

  • scripts/02_filter_abstracts.py - 按摘要过滤(Haiku/Sonnet/Ollama)

提取:

  • scripts/03_extract_from_pdfs.py - 使用Claude视觉从PDF中提取

处理:

  • scripts/04_repair_json.py - 修复和验证JSON
  • scripts/05_validate_with_apis.py - 用外部数据库丰富
  • scripts/06_export_database.py - 导出到分析格式

验证:

  • scripts/07_prepare_validation_set.py - 抽样论文进行注释
  • scripts/08_calculate_validation_metrics.py - 计算P/R/F1指标

资产

模板:

  • assets/schema_template.json - 空白提取模式模板
  • assets/api_config_template.json - API验证配置模板

示例:

  • assets/example_flower_visitors_schema.json - 生态学提取示例
  • assets/example_api_config_ecology.json - 生态学API验证示例