Skip to content

Repository files navigation

PDF 专业词汇提取器

基于 Flask + NLTK 的 PDF 术语提取工具,支持上传 PDF 或导入 Excel,自动去重合并、翻译、导出,并维护本地熟词库。

主要功能

  • 提取专业词汇:从 PDF 文本中提取高频术语和短语(词性过滤 + n-gram)
  • 多文件去重合并:多次上传后按词条合并,频次自动累加
  • 中文翻译:优先批量在线翻译,失败时自动降级到内置词典
  • Excel 导入:可导入之前导出的 .xlsx 词表并继续合并
  • 熟词库过滤:可将已掌握词加入熟词库,后续提取自动过滤
  • 表格交互:搜索、排序、双击编辑、Delete 删除、撤销
  • 多格式导出:支持 CSVExcel (.xlsx)Anki (.txt)
  • 语境查看:点击词条可查看原文句子示例

技术栈

  • 后端:Flask, Flask-CORS
  • PDF 解析:pdfplumber
  • NLP:NLTK
  • Excel:openpyxl
  • 翻译:translators(Bing + fallback)
  • 前端:原生 JavaScript + HTML + CSS

运行环境

  • Python 3.9+
  • Windows/macOS/Linux

快速开始

# 1) 安装依赖(自动创建虚拟环境)
uv sync

# 2) 启动服务
uv run pdf
# 或者直接运行
# uv run python app.py

启动后访问:http://127.0.0.1:5000

使用说明

  1. 上传 PDF:提取词汇并自动翻译。
  2. 上传 Excel(.xlsx):导入历史词表并和当前结果去重合并。
  3. 在表格中可搜索、排序、双击编辑。
  4. 点击右侧按钮可将词条标记为“熟词”。
  5. 按需导出为 CSV / Excel / Anki

API 概览

POST /upload

上传 PDF 并返回提取结果。

  • 请求:multipart/form-data
  • 参数:file.pdf

示例响应:

{
  "filename": "paper.pdf",
  "total_extracted": 42,
  "vocabulary": [
    {
      "term": "neural network",
      "pos": "phrase",
      "frequency": 8,
      "context": ["..."] ,
      "translation": "神经网络"
    }
  ]
}

POST /import_excel

导入 Excel 词表并返回解析结果。

  • 请求:multipart/form-data
  • 参数:file.xlsx

支持表头别名:

  • 词汇 / term
  • 词性 / pos
  • 中文释义 / translation
  • 出现频次 / 频次 / frequency
  • 示例原句 / context

POST /export

导出当前词表。

  • 请求:application/json
{
  "format": "csv",
  "vocabulary": []
}
  • format 可选:csv / excel / anki

熟词库接口

  • GET /known_words:获取熟词列表
  • POST /known_words:批量新增熟词
  • DELETE /known_words:批量移除熟词

请求示例:

{
  "words": ["efficient", "oil"]
}

项目结构

pdf/
├── app.py                # Flask 应用与 API
├── extractor.py          # 术语提取与语境索引
├── translator.py         # 批量翻译与词典回退
├── main.py               # 入口点 (uv run pdf)
├── known_words.json      # 熟词库(本地持久化)
├── pyproject.toml        # 项目配置与依赖(UV 管理)
├── uv.lock               # 锁定文件
├── templates/
│   └── index.html
└── static/
    ├── app.js
    └── style.css

配置说明

  • 最大上传大小:app.pyMAX_CONTENT_LENGTH(默认 50MB
  • 提取参数:extractor.pyextract_vocabulary(min_freq=2, max_terms=200)
  • 自定义停用词:extractor.pyEXTRA_STOP_WORDS

注意事项

  • 扫描版 PDF(纯图片)通常无法直接提取文本,需要先 OCR。
  • 首次运行会下载 NLTK 数据。
  • 在线翻译不可用时会自动使用内置词典回退。

License

MIT

About

文献单词提取器

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages