法
法律文档 OCR 文本提取
作者:鹿Sir法律合规v1
用针对法律语言优化的 OCR 流水线,把扫描版 PDF 法律文书(判决书、起诉状、裁定书等)转换为高精度可编辑文本,支持低质量扫描、多栏排版、表格与法律术语修正,输出带置信度评分与结构化章节的 JSON 结果。当用户需要识别扫描版法律文书、从图片版 PDF 提取文字、批量数字化案卷材料时触发。触发词:法律 OCR、扫描件识别、PDF 文字提取、文书数字化。
下载量
353
点赞
87
价格
免费
技能文档
---
name: diegosouzapw-legal-ocr
title: 法律文档 OCR 文本提取
category: 法律合规
description: 用针对法律语言优化的 OCR 流水线,把扫描版 PDF 法律文书(判决书、起诉状、裁定书等)转换为高精度可编辑文本,支持低质量扫描、多栏排版、表格与法律术语修正,输出带置信度评分与结构化章节的 JSON 结果。当用户需要识别扫描版法律文书、从图片版 PDF 提取文字、批量数字化案卷材料时触发。触发词:法律 OCR、扫描件识别、PDF 文字提取、文书数字化。
---
# 法律文档 OCR 文本提取
## 概述
本技能使用针对法律语言优化的 OCR(光学字符识别)流水线,从扫描版 PDF 法律文书中提取文本。
**主要特性:**
- **高精度**:干净文档 95%+,低质量扫描件 85-90%
- **面向法律语言优化**:内置 200+ 法律术语专用词典(默认巴西葡萄牙语法律术语,可替换为其他语言词典)
- **智能预处理**:倾斜校正、去噪、对比度增强
- **多引擎**:PaddleOCR(主)+ EasyOCR(备用)
- **结构保留**:自动识别章节(案情汇报、论证理由、裁判主文等)
- **质量校验**:置信度评分与错误检测
## 适用场景
- 把扫描版司法文书 PDF 转换为可编辑文本
- 从数字化判决书、裁定书、起诉状中提取内容
- 处理老旧或低质量扫描件
- 为法律分析系统(RAG)准备历史文档
- 从纸质卷宗的数字化件构建判例库
**不适用:**
- 原生数字 PDF(直接用文本提取工具即可)
- 手写文档(精度有限)
- 分辨率 < 200 DPI 的图片(效果差)
## 工作原理
### 处理流水线
```
扫描版 PDF
↓
[1] PDF → 图片转换(PyMuPDF,300 DPI)
↓
[2] 预处理
• 灰度化
• 倾斜校正(Hough Transform)
• 去噪(Median Blur)
• 对比度增强(CLAHE)
• 自适应二值化
↓
[3] OCR 引擎(PaddleOCR)
• 文本检测
• 字符识别
• 置信度评分
↓
[4] 置信度 < 30% 时降级到备用引擎(EasyOCR)
↓
[5] 后处理
• 法律术语词典校正
• 变音符号修正
• 文档结构识别
↓
[6] 质量校验
• 置信度评分
• 易混字符检测(O/0、l/1 等)
• 标记需人工复核的页面
↓
结构化文本(JSON)
```
### 技术组件
| 组件 | 库 | 作用 |
|------------|-----------|---------|
| PDF → 图片 | PyMuPDF (fitz) | 快速转换(比 pdf2image 快约 3.3 倍) |
| 预处理 | OpenCV | 图像质量增强 |
| OCR 主引擎 | PaddleOCR | 葡语场景准确率 95%+ |
| OCR 备用引擎 | EasyOCR | 主引擎失败时的降级方案 |
| 后处理 | 自研 + Transformers | 法律术语校正 |
## 功能
### 1. 高级预处理
- **倾斜校正**:检测并纠正扫描歪斜的文档
- **去噪**:清除扫描伪影
- **CLAHE**:自适应对比度增强(对老旧文档至关重要)
- **二值化**:转换为面向 OCR 优化的黑白图
### 2. 法律术语词典
- 预置 200+ 法律术语(默认巴西葡萄牙语,可替换词典)
- 自动纠正常见错误(如 "açao" → "ação"、"decisao" → "decisão")
- 相似术语模糊匹配(相似度 85%+)
- 领域覆盖:民事、刑事、劳动、税务
### 3. 结构识别
自动识别法律文书的典型章节:
- **页眉**:法院、案号
- **前言**:当事人、法官
- **案情汇报**:事实概要
- **论证理由**:法律论证
- **裁判主文**:最终裁决
- **签署区**:签名区块
### 4. 复杂版式支持
- 多栏排版
- 表格(结构化提取)
- 页眉页脚
- 脚注
### 5. 质量校验
- 置信度评分(0-100)
- O/0、l/1、S/5 易混字符检测
- 必备要素核验(法官、法院、日期等)
- 置信度 < 70% 时自动标记人工复核
## 技能工作流
### 步骤1:环境准备
前置要求:Python 3.8+,(可选)带 CUDA 的 NVIDIA GPU 用于加速。
```bash
# 安装依赖
pip install -r requirements.txt
# 下载 PaddleOCR 识别模型
python -c "from paddleocr import PaddleOCR; PaddleOCR(lang='pt')"
```
### 步骤2:提取单个文档
```bash
# 从单个 PDF 提取文本
python scripts/pipeline_ocr.py sentenca_escaneada.pdf
```
带选项执行:
```bash
# 高质量 + GPU + 自定义输出
python scripts/pipeline_ocr.py \
--input documento.pdf \
--output resultado.json \
--quality high \
--use-gpu \
--dpi 400
```
### 步骤3:批量处理
```bash
# 处理多个 PDF
python scripts/pipeline_ocr.py \
--input-dir ./processos_escaneados/ \
--output-dir ./textos_extraidos/ \
--batch-size 32
```
### 步骤4:核对质量结论
检查输出 JSON 中的 `quality_summary`:平均置信度、问题总数、需复核页数;置信度 < 70% 的页面安排人工复核。
## 输出格式
结果为结构化 JSON 文件:
```json
{
"filename": "sentenca_123.pdf",
"timestamp": "2025-12-10T21:00:00",
"metadata": {
"total_pages": 15,
"processing_time_seconds": 45.2,
"gpu_used": true,
"primary_engine": "paddleocr",
"fallback_used_pages": [3, 7]
},
"pages": [
{
"page_num": 1,
"text": "SENTENÇA\n\nProcesso nº 0001234-56.2024.8.26.0100...",
"confidence": 0.92,
"source": "paddleocr",
"validation": {
"confidence": 85,
"issues": [],
"requires_review": false
},
"structure": {
"section": "header",
"detected_elements": ["tribunal", "numero_processo", "juiz"]
}
}
],
"full_text": "SENTENÇA\n\nProcesso nº 0001234-56.2024.8.26.0100...",
"document_structure": {
"header": "SENTENÇA\nTribunal de Justiça de São Paulo...",
"relatorio": "Trata-se de ação de...",
"fundamentacao": "É o relatório. Decido.\n\nO pedido merece...",
"dispositivo": "Pelo exposto, JULGO PROCEDENTE..."
},
"quality_summary": {
"avg_confidence": 0.89,
"total_issues": 2,
"pages_requiring_review": 0,
"overall_quality": "good"
}
}
```
## 配置
### 默认配置(干净文档)
```python
{
'dpi': 300,
'quality': 'standard',
'confidence_threshold': 0.4,
'use_gpu': True,
'batch_size': 32
}
```
### 低质量文档配置
```python
{
'dpi': 400,
'quality': 'high',
'confidence_threshold': 0.2,
'preprocessing': {
'clahe_clip_limit': 4.0,
'denoise_strength': 7,
'binarization': 'adaptive'
}
}
```
## 性能参考
| 配置 | 吞吐量 | 准确率 | 要求 |
|-------------|-----------|----------|------------|
| GPU + Batch 32 | 800 页/小时 | 95%+ | 8GB 显存 |
| GPU + Batch 16 | 600 页/小时 | 95%+ | 6GB 显存 |
| CPU | 300 页/小时 | 94% | 4GB 内存 |
基础设施全部开源,无 API 调用成本。
## 局限性
- 手写文档:准确率 < 60%(不推荐)
- 分辨率 < 200 DPI 的图片:效果差
- 年代久远/破损严重的文档:可能需要人工调整
- 复杂表格:结构化提取能力有限
- 语言:仅针对巴西葡萄牙语优化
## 与下游系统集成
提取结果为标准 JSON,可直接写入向量数据库,用于法律文书检索与分析:
```bash
# 批量提取后,把质量达标(overall_quality 为 good/excellent)的
# full_text 字段连同 metadata 一并写入向量库即可
python scripts/pipeline_ocr.py --input-dir ./扫描件/ --output-dir ./提取结果/
```使用说明
# 法律文档 OCR 文本提取 用针对法律语言优化的 OCR 流水线,把扫描版 PDF 法律文书转为高精度可编辑文本,输出带置信度评分与章节结构的 JSON 结果。 ## 使用 ```bash # 单个文档提取 python pipeline_ocr.py sentenca_escaneada.pdf # 批量处理整个卷宗目录 python pipeline_ocr.py --input-dir ./扫描件/ --output-dir ./提取结果/ --batch-size 32 ``` 输出 JSON 包含逐页文本与置信度、识别引擎来源、文档章节结构(页眉/案情/论证/主文)与整体质量结论;置信度低于 70% 的页面自动标记人工复核。 ## 工作原理 1. PyMuPDF 转 300 DPI 图片,OpenCV 预处理(倾斜校正、去噪、CLAHE、二值化) 2. PaddleOCR 主引擎识别,置信度不足自动降级 EasyOCR 3. 法律术语词典校正 + 章节结构识别 + 质量校验,达标结果可直接写入向量库做检索分析
支持平台:Qoder · QoderWork · Claude · Codex 等 AI 编程助手