A CLI tool that automatically extracts key entity information from Chinese PDF contracts using regex-based pattern matching.
- Extracts key entities from Chinese PDF contracts: party names, contract amount, signing date, and penalty clauses
- Supports single-file and batch directory processing
- Exports results to CSV or JSON for downstream analysis
- Displays results in a formatted Rich table in the terminal
- Regex-based pattern matching with configurable patterns via
patterns.py - Lightweight and dependency-minimal — no ML models required
Install via pip:
pip install contract-entity-extractorInstall from source with Poetry:
git clone https://github.com/PerryLink/contract-entity-extractor.git
cd contract-entity-extractor
poetry installExtract entities from a single PDF:
contract-extract contract.pdfBatch process all PDFs in a directory:
contract-extract contract1.pdf contract2.pdf contract3.pdfExport results to CSV:
contract-extract *.pdf --output results.csv --format csvExport results to JSON:
contract-extract *.pdf --output results.json --format jsonSample output:
┏━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━┳━━━━━━━━┳━━━━━━━━━━━━┳━━━━━━━━┓
┃ 文件名 ┃ 甲方 ┃ 乙方 ┃ 金额 ┃ 签订日期 ┃ 违约金 ┃
┡━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━╇━━━━━━━━╇━━━━━━━━━━━━╇━━━━━━━━┩
│ contract.pdf │ 北京科技公司 │ 上海贸易公司 │ 500万 │ 2024-01-01 │ 20% │
└────────────────┴────────────────┴────────────────┴────────┴────────────┴────────┘
contract-entity-extractor/
├── src/
│ └── contract_entity_extractor/
│ ├── cli.py # CLI entry point (Typer)
│ ├── core.py # Extraction logic
│ ├── models.py # Data models
│ ├── patterns.py # Regex patterns
│ └── utils.py # Utilities
├── tests/
│ ├── test_core.py
│ └── test_patterns.py
├── pyproject.toml
└── README.md
| Library | Purpose | Link |
|---|---|---|
| pdfplumber | PDF text extraction | pdfplumber |
| Rich | Terminal table rendering | rich |
| Typer | CLI framework | typer |
| Poetry | Dependency and packaging management | poetry |
Run tests:
poetry run pytest tests/Check code style:
poetry run ruff check .
poetry run black --check .This project is licensed under the Apache 2.0 License. Copyright 2026 Chance Dean novelnexusai@outlook.com
一个基于正则表达式模式匹配,自动从中文 PDF 合同中提取关键实体信息的命令行工具。
- 从中文 PDF 合同中提取关键实体:甲方、乙方、合同金额、签订日期及违约条款
- 支持单文件处理和批量目录处理
- 支持将结果导出为 CSV 或 JSON 格式,便于后续分析
- 在终端以 Rich 格式化表格展示提取结果
- 基于正则表达式的模式匹配,可通过
patterns.py自定义配置 - 轻量级,无需机器学习模型
通过 pip 安装:
pip install contract-entity-extractor从源码使用 Poetry 安装:
git clone https://github.com/PerryLink/contract-entity-extractor.git
cd contract-entity-extractor
poetry install提取单个 PDF 文件的实体:
contract-extract contract.pdf批量处理目录下所有 PDF:
contract-extract contract1.pdf contract2.pdf contract3.pdf将结果导出为 CSV:
contract-extract *.pdf --output results.csv --format csv将结果导出为 JSON:
contract-extract *.pdf --output results.json --format json示例输出:
┏━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━┳━━━━━━━━┳━━━━━━━━━━━━┳━━━━━━━━┓
┃ 文件名 ┃ 甲方 ┃ 乙方 ┃ 金额 ┃ 签订日期 ┃ 违约金 ┃
┡━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━╇━━━━━━━━╇━━━━━━━━━━━━╇━━━━━━━━┩
│ contract.pdf │ 北京科技公司 │ 上海贸易公司 │ 500万 │ 2024-01-01 │ 20% │
└────────────────┴────────────────┴────────────────┴────────┴────────────┴────────┘
contract-entity-extractor/
├── src/
│ └── contract_entity_extractor/
│ ├── cli.py # 命令行入口(Typer)
│ ├── core.py # 提取逻辑
│ ├── models.py # 数据模型
│ ├── patterns.py # 正则表达式模式
│ └── utils.py # 工具函数
├── tests/
│ ├── test_core.py
│ └── test_patterns.py
├── pyproject.toml
└── README.md
| 库 | 用途 | 链接 |
|---|---|---|
| pdfplumber | PDF 文本提取 | pdfplumber |
| Rich | 终端表格渲染 | rich |
| Typer | 命令行框架 | typer |
| Poetry | 依赖管理与打包 | poetry |
本项目采用 Apache 2.0 许可证。版权所有 2026 Chance Dean novelnexusai@outlook.com