Skip to content

PerryLink/Contract-Entity-Extractor

Repository files navigation

Contract Entity Extractor

Python License Code Style

A CLI tool that automatically extracts key entity information from Chinese PDF contracts using regex-based pattern matching.


Features

  • 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

Quick Start

Install via pip:

pip install contract-entity-extractor

Install from source with Poetry:

git clone https://github.com/PerryLink/contract-entity-extractor.git
cd contract-entity-extractor
poetry install

Usage

Extract entities from a single PDF:

contract-extract contract.pdf

Batch process all PDFs in a directory:

contract-extract contract1.pdf contract2.pdf contract3.pdf

Export results to CSV:

contract-extract *.pdf --output results.csv --format csv

Export results to JSON:

contract-extract *.pdf --output results.json --format json

Sample output:

┏━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━┳━━━━━━━━┳━━━━━━━━━━━━┳━━━━━━━━┓
┃ 文件名         ┃ 甲方           ┃ 乙方           ┃ 金额   ┃ 签订日期   ┃ 违约金 ┃
┡━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━╇━━━━━━━━╇━━━━━━━━━━━━╇━━━━━━━━┩
│ contract.pdf   │ 北京科技公司   │ 上海贸易公司   │ 500万  │ 2024-01-01 │ 20%    │
└────────────────┴────────────────┴────────────────┴────────┴────────────┴────────┘

Project Structure

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

Tech Stack

Library Purpose Link
pdfplumber PDF text extraction pdfplumber
Rich Terminal table rendering rich
Typer CLI framework typer
Poetry Dependency and packaging management poetry

Development

Run tests:

poetry run pytest tests/

Check code style:

poetry run ruff check .
poetry run black --check .

License

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

About

A CLI tool that automatically extracts key entity information from Chinese PDF contracts using regex-based pattern matching.一个基于正则表达式模式匹配,自动从中文 PDF 合同中提取关键实体信息的命令行工具。

Resources

License

Contributing

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages