Ollama 本地 OCR 大模型实战:发票、证件、文档离线识别全攻略

摘要

通过 Ollama 在本地部署 GLM-OCR 大模型,实现发票、社保卡、身份证、合同照片等办公文档的离线文字识别,涵盖安装、模型选择、命令行调用与客户端交互全流程。

Ollama 本地 OCR 大模型实战:发票、证件、文档离线识别全攻略

一、为什么我对本地 OCR 这么执着?

在写脚本的过程中,我对接最多的就是 HR、财务、行政这几个岗位的同事。他们的需求看似五花八门,归根结底都指向同一件事:把图片里的文字提取出来,变成可以编辑、可以统计的结构化数据

最典型的几个场景包括:

  • 发票报销:电子发票、纸质发票混着来,需要抓取发票代码、号码、金额、开票日期;
  • 社保资料:身份证、社保卡、银行卡照片,要识别姓名、证件号、卡号;
  • 公司制度文件:PDF 文件或者截图,需要转成 Word / Excel 再统一处理;
  • 现场照片归档:外出拍摄的合同、记录单据,要提取文字做台账。

这些事情如果全靠人工敲键盘录入,不仅耗时,还极易出错。所以我一直琢磨着,能不能用脚本把 OCR 这件事彻底自动化。

二、传统 OCR 方案踩过的那些坑

为了找到合适的方案,我前前后后试了不少工具,每个都有让人抓狂的地方。

1. 传统 Python OCR 库

比如 pytesseract 这类老牌开源库,优点是免费、完全离线,但实际效果真的让人不敢恭维:

  • 中文识别率忽高忽低,遇到花体字、复杂背景、表格排版就翻车;
  • 对发票、社保、合同这类结构化文档基本无能为力——它只能"读出字",却读不懂"字段含义";
  • 依赖链冗长,换台电脑就可能报错;
  • 打包成 exe 后体积爆炸。

一句话总结:能跑,但不准、也不够聪明。

2. 在线 OCR 大模型 API

阿里百炼、火山引擎、智谱这类平台确实效果惊艳,我用了相当长一段时间。但后来还是决定弃用,原因如下:

  • 免费额度捉襟见肘:个人玩玩还行,全公司推广很快就被刷光;
  • 强制联网:财务发票、员工身份证、社保资料……一旦上传到公网服务器,心里难免犯嘀咕;
  • 数据出境风险:目前虽然没爆出明确的隐私事件,但"数据上传"这件事本身就是风险点。公司业务数据、员工个人信息,能留在内网就别流出去。

于是我开始寻找一种既能享受大模型 OCR 的高准确率,又能完全本地运行、不花 API 费用、不上传数据的方案。最终答案就是:Ollama + 本地 OCR 大模型

三、为什么最终选了 Ollama?

Ollama 应该是我目前用过最省心的本地大模型部署工具,没有之一。

下载地址: https://ollama.com/

  • 安装零门槛:Windows、macOS、Linux 都有官方安装包,傻瓜式下一步;
  • 模型仓库齐全:GLM-OCR、Qwen、Llama 等主流模型一键拉取;
  • 命令行极简ollama run 模型名 直接开跑;
  • API 兼容 OpenAI 接口:写脚本调用时,只需把 base_url 改成 http://localhost:11434 即可无缝对接;
  • 完全离线运行:模型一旦下载到本地,后续推理再也不用联网,数据始终留在这台机器上。

对于我们这种"想自动识别发票、社保资料,又绝对不想让数据出公司"的需求,Ollama 简直是为它量身定做的。

四、完整实战:部署 GLM-OCR 并识别发票

下面把整个部署和调用过程完整还原,按步骤走基本不会出问题。

步骤 1:下载并安装 Ollama

访问 Ollama 官网,点击右上角 Download 按钮,选择 Windows 版本的安装包下载即可。安装过程和装普通软件一样,一路"下一步"就能搞定。

步骤 2:关闭自动更新(强烈建议)

安装完毕后,进入 Ollama 设置,务必关闭 "Auto-download updates" 这一项。原因是模型在推理过程中如果触发自动升级,可能会打断工作流,甚至带来不必要的网络请求。

如果你的 C 盘空间比较紧张,也可以把 Model location 路径改到 D 盘等容量大的分区,例如 D:\OLLAMA_MODELS

步骤 3:拉取 OCR 模型

Ollama 官方仓库里就有专门的 OCR 模型,本次我选用的是 GLM-OCR。它主要分为以下几个版本:

版本大小适用场景
glm-ocr:latest2.2 GB标准版,精度与速度比较均衡
glm-ocr:q8_01.6 GB量化版,体积更小,推荐普通办公电脑
glm-ocr:bf162.2 GB高精度版,对显卡有一定要求

普通办公机推荐 glm-ocr:q8_0仅 1.6 GB,识别速度和准确率都够用。拉取命令如下:

Bashollama run glm-ocr:q8_0

首次运行会自动下载模型文件,等进度条跑完即可。

步骤 4:命令行快速验证

模型下载完成后,可以直接在命令行传入图片路径进行测试:

Bashollama run glm-ocr:q8_0 C:\Users\xiaobo_zhu\Pictures\Screenshots\1.png

我测试的是一份公司制度文件的截图,模型很快返回了完整的文字内容,津贴、奖金、加班费等条款的排版基本和原图保持一致。

步骤 5:Ollama 客户端交互识别

除了命令行,Ollama 自带的桌面客户端也支持直接上传图片。操作流程很简单:

  1. 在模型下拉框中选择 glm-ocr:q8_0
  2. 把图片粘贴或拖入输入区;
  3. 在输入框中写提示词,例如:
Text识别这张图片中的所有文字,保持原有排版格式。

或者针对发票这样写:

Text识别发票,提取发票代码、发票号码、开票金额、开票日期,输出 Markdown 表格。

我实测上传了一张电子发票,模型直接返回了一个 HTML 表格,里面清清楚楚地列出了购买方、销售方、商品名称、金额、税率等字段,结构非常工整。

步骤 6:验证完全离线运行

为了打消"数据会不会偷偷上传"的顾虑,我专门做了一次断网测试:拔掉网线、关掉 Wi-Fi 后,Ollama 依然能正常加载本地模型并完成 OCR 识别

这对财务、人事这类接触敏感数据的岗位来说,绝对是一颗定心丸。

总结:通过 Ollama 部署 GLM-OCR,本质上是把"大模型级别的 OCR 能力"装进了一台普通的办公电脑里——离线、免费、隐私安全,对于需要批量处理发票、证件、合同的企业和团队来说,是目前性价比最高的一条路径。

扫描二维码

扫描二维码在手机上阅读

文章海报

常见问题

1 Ollama 部署的 OCR 模型需要联网才能使用吗?
不需要。模型一旦下载到本地,后续所有推理都在本机完成,完全不依赖外网。即使处于断网状态,OCR 识别功能依然可以正常运行。
2 GLM-OCR 应该选哪个版本?q8_0 和 bf16 区别大吗?
普通办公电脑(无独立显卡或仅入门级显卡)推荐 glm-ocr:q8_0,体积仅 1.6 GB,识别速度和精度都够用;如果你的机器配备了较好的显卡,且对精度有更高要求,可以选择 glm-ocr:bf16
3 本地 OCR 大模型和在线 API 相比,准确率会不会差很多?
GLM-OCR 对中文文档、发票、合同等场景的识别准确率已经相当不错,和主流在线 API 差距不大,而且完全免费、没有调用次数限制。
4 除了发票和证件,Ollama OCR 还能识别哪些内容?
几乎所有包含文字的图片都可以处理,比如公司制度截图、会议白板照片、扫描的合同、手写笔记、表格、票据等等。