一个法律从业者的 AI 工具链实录
故事要从一张"敏感图"说起
最近遇到一个头疼的问题——
把一份含法院公章和判决金额的扫描件发给 AI 助手,它回了一句:"图片内容无法处理。"
嗯?自己的电脑、自己的文件、自己的 AI 助手,怎么就"无法处理"了?
原因是:底层大模型 API 自带图像安全审查——公章、红五角星、银行账号、法律纠纷金额……这些在法律文档里再正常不过的东西,API 判定为"敏感内容",直接拒绝处理。
大模型的"安全"设计,在法律实务面前成了绊脚石。
解决方案:让 AI 助手先"读字"再看图
思路很简单:不让大模型直接看图,先用 OCR 把图片里的文字抽出来,再把纯文字喂给 AI。
这样既绕过了图像审查,又保留了文档内容。
而 Windows 上最好用的免费 OCR 引擎,非 Tesseract 莫属。
第一步:装 Tesseract
Tesseract 是 Google 开源的 OCR 引擎,免费、离线、本地运行,不联网、不上传数据。
下载安装
去 GitHub Releases[1] 下载 Windows 安装包,推荐装 5.5.0 以上版本。
安装时记得勾选你要的语言包——至少勾上:
• 简体中文(chi_sim) • 英文(eng)
装完后验证:
tesseract --versiontesseract --list-langs能看到语言列表就对了。
装 Python 绑定(可选)
如果你习惯用 Python 调用:
pip install pytesseract Pillow第二步:写一个 OCR 脚本
核心脚本,专门处理法律文档的 OCR 需求:
import subprocessfrom pathlib import PathTESSERACT = r"C:\Program Files\Tesseract-OCR\tesseract.exe"def ocr(image_path: str, lang: str = "chi_sim+eng") -> str: img = Path(image_path) out_path = str(img.with_suffix(".ocr.txt")) Path(out_path).unlink(missing_ok=True) cmd = [ TESSERACT, str(img), out_path.removesuffix(".txt"), "-l", lang, "--oem", "3", "--psm", "6", ] subprocess.run(cmd, capture_output=True, timeout=120, text=True) return Path(out_path).read_text(encoding="utf-8", errors="replace").strip()核心参数说明:
-l chi_sim+eng | ||
--oem 3 | ||
--psm 6 |
第三步:集成到 OpenClaw
关键的一步:让 AI 助手在遇到图片时,自动判断要不要走 OCR 绕路。
在 OpenClaw 的 MEMORY.md 里加一条规则:
敏感图走 OCR 绕图审查:图片含公章/红头/红五角星/银行账号/法律纠纷金额/身份证/手机号→ 不送 LLM,先走 Tesseract OCR 抽文字再处理纯风景照、产品图、技术截图(无敏感文字)仍可直送
这样 AI 助手就能自己判断了:
1. 收到图片 → 看是不是"敏感类型" 2. 是 → 调用 Tesseract OCR 抽文字 3. 把纯文字展示给用户,继续正常对话
纯风景照、产品截图这些正常图片,不受影响,该怎么处理怎么处理。
实战效果
拿一份判决书扫描件试了一下:
源图: 判决书扫描件.jpg输出: 判决书扫描件.ocr.txt字数: 2,847OCR 识别率在 95% 以上,人名、案号、金额基本准确。偶有同音字错误("被告"写成"贝告"),但上下文足够让 AI 理解正确内容。
对比前后:
• ❌ 之前:图片被 API 拦截 → "无法处理" • ✅ 之后:OCR 抽文字 → AI 正常分析 → 给出答案
踩过的坑
坑 1:DPI 不够,识别率低
默认 72 DPI 的截图,Tesseract 识别率惨不忍睹。
解法:OCR 前用 PyMuPDF 把 PDF 转图片时,设置 300 DPI:
mat = fitz.Matrix(300/72, 300/72)pix = page.get_pixmap(matrix=mat)300 DPI 是法律文档 OCR 的"甜点"——再高收益递减,速度还慢。
坑 2:中文模型不够
Tesseract 默认只装英文。中文文档需要额外下载 chi_sim(简体中文)模型。
安装方式:重跑安装包,选语言包;或者手动下载 .traineddata 文件放到 tessdata 目录。
坑 3:Windows 路径问题
在 PowerShell 里调用 Tesseract,路径带空格会炸。
解法:Python 里用 subprocess.run 传列表参数(不是字符串),让系统自己处理路径转义:
# ✅ 正确:传列表subprocess.run([tesseract_exe, img_path, out_path, "-l", "chi_sim"])# ❌ 错误:传字符串,空格路径会炸subprocess.run(f'"{tesseract_exe}" "{img_path}" ...')整体架构图
用户发图片 ──→ OpenClaw 主 agent │ ├─ 普通图片(风景/产品/截图)──→ 直接送 LLM │ └─ 敏感图片(公章/红头/金额) │ ▼ Tesseract OCR(本地离线) │ ▼ 纯文字 ──→ 送 LLM 分析 ──→ 回复用户总结
Tesseract + OpenClaw 的组合,解决了一个很具体的痛点:大模型 API 的安全审查和实务需求之间的冲突。
• ✅ 完全离线、本地运行,数据不出电脑 • ✅ 免费,无 API 调用费 • ✅ 中英文混合识别率 95%+ • ✅ 跟 AI 助手无缝集成,用户无感
如果你也在用 AI 处理法律文档、合同、扫描件,遇到"图片敏感"的问题,这个方案值得一试,它可以嵌入任何工作流中。
觉得有用?点个在看、转发支持一下!有踩坑经验的欢迎评论区交流 👇
引用链接
[1] GitHub Releases: https://github.com/UB-Mannheim/tesseract/wiki
夜雨聆风