从科学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以匹配研究领域:
- Objective: 描述要提取的数据
- Instructions: 提取指导步骤
- Output schema: 定义结构的JSON模式
- Important notes: 特定领域的规则
- 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篇论文
迭代改进
- 使用基线模式进行初始提取
- 使用步骤7-9对样本进行验证
- 分析字段级指标和错误模式
- 修订模式、提示或模型选择
- 重新提取和验证
- 比较指标以验证改进
- 重复直到达到可接受的质量
查看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- 修复和验证JSONscripts/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验证示例