Ollama OCR 大模型:让发票、社保、照片识别在本地跑起来

Ollama OCR 大模型:让发票、社保、照片识别在本地跑起来

商城已上线,快去看看吧!

Ollama OCR 大模型:让发票、社保、照片识别在本地跑起来

久等了!最近一直在给公司同事写各种脚本,所以这次关于 OCR 的内容确实拖得有点久。但因为这件事对咱们日常办公太关键了,所以还是认真整理了一篇出来,希望对大家有用。

一、为什么我对 OCR 这么上心?

平时给公司写脚本,接触最多的就是人事、财务、行政的同事。他们的需求听起来很杂,但总结下来几乎都离不开一件事:

把图片里的文字变成可编辑、可统计的数据。

举几个最常见的场景:

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

 

这些工作如果靠人工一条一条录入,费时费力还容易出错。所以我一直想通过脚本把 OCR 自动化,解放大家双手。

二、传统 OCR 方案的痛点

我前前后后试了不少方案,发现都有各自的坑。

1. Python 传统 OCR 库

像 pytesseract 这类开源库,胜在免费、离线,但识别效果一言难尽:

  • 对中文识别率不稳定,尤其是字体复杂、背景干扰、表格排版时;
  • 对发票、社保、合同这种结构化文档,基本只能“读出文字”,很难“理解字段”;
  • 部署依赖多,不同电脑环境还容易报错。
  • 而且打包exe会特别大

一句话:能跑,但不够准、不够智能。

2. 在线 OCR 大模型

现在市面上有很多免费的在线 OCR 大模型,比如阿里百炼、火山引擎、智谱等,识别效果确实好。但用了一段时间后,我发现几个问题:

  • 免费额度有限:个人用用还行,一旦全公司推广,额度很快就见底;
  • 必须联网:财务发票、社保资料、身份证照片……这些东西要传到公网服务器,心里多少有点不踏实;
  • 隐私风险:虽然现在看不到明确的隐私问题,但“上传了”本身就是风险。公司业务数据、员工个人信息,能不出公司就不出公司。

所以我就开始琢磨:有没有一种方案,既能享受大模型 OCR 的准确率,又能完全本地运行、不花 API 钱、不上传数据?

答案就是:Ollama + 本地 OCR 大模型

三、为什么选 Ollama?

Ollama 是我个人觉得目前部署本地大模型最省心的工具之一。

  • 一键安装:Windows、macOS、Linux 都有官方安装包;
  • 模型仓库丰富:可以直接下载 GLM-OCR、Llama、Qwen 等模型;
  • 命令行简单ollama run 模型名 就能跑起来;
  • API 兼容 OpenAI:写脚本调用时,基本把 URL 改成 http://localhost:11434 就能用;
  • 完全离线:模型下载到本地后,后续推理不需要联网,数据不出本机。

对于我们这种“想自动识别发票、社保资料,但又不想把数据传出去”的场景,Ollama 非常合适。

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

下面我把这次实践的完整过程整理一下,照着做基本不会错。

步骤 1:下载安装 Ollama

打开 Ollama 官网,点击右上角 Download 按钮,选择 Windows 版本下载安装包即可。安装过程和普通软件一样,一路下一步就行。

图片[1]-Ollama OCR 大模型:让发票、社保、照片识别在本地跑起来-寻找资源网

图片[2]-Ollama OCR 大模型:让发票、社保、照片识别在本地跑起来-寻找资源网

步骤 2:关闭自动更新(可选但推荐)

安装完成后,打开 Ollama 设置,建议关闭 Auto-download updates,避免模型在使用过程中被自动升级或网络请求打断。如果 C 盘空间紧张,也可以把 Model location 改成 D 盘等其他目录,比如 D:\MODE

图片[3]-Ollama OCR 大模型:让发票、社保、照片识别在本地跑起来-寻找资源网

步骤 3:下载 OCR 模型

Ollama 的模型库里有专门的 OCR 模型,这次我用的是 GLM-OCR。它有几个版本:

版本
大小
适用场景
glm-ocr:latest
2.2 GB
标准版,精度与速度均衡
glm-ocr:q8_0
1.6 GB
量化版,更轻量,适合普通办公电脑
glm-ocr:bf16
2.2 GB
精度更高,对显卡要求也更高

普通办公电脑推荐 glm-ocr:q8_0,只有 1.6 GB,识别速度和效果都够用。

下载命令:

ollama run glm-ocr:q8_0

第一次运行会自动下载模型,耐心等待进度条跑完即可。

图片[4]-Ollama OCR 大模型:让发票、社保、照片识别在本地跑起来-寻找资源网

图片[5]-Ollama OCR 大模型:让发票、社保、照片识别在本地跑起来-寻找资源网

图片[6]-Ollama OCR 大模型:让发票、社保、照片识别在本地跑起来-寻找资源网

步骤 4:命令行快速测试

模型下载完成后,在命令行直接输入图片路径,就能让模型识别:

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

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

图片[7]-Ollama OCR 大模型:让发票、社保、照片识别在本地跑起来-寻找资源网

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

除了命令行,Ollama 自带的客户端也能直接上传图片。选择模型 glm-ocr:q8_0,粘贴图片或截图,然后在输入框里写提示词:

识别这张图片中的所有文字,保持原有排版格式。

或者直接针对发票提要求:

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

我上传了一张电子发票,模型直接返回了包含购买方、销售方、项目名称、金额、税率等信息的 HTML 表格,结构非常清晰。

图片[8]-Ollama OCR 大模型:让发票、社保、照片识别在本地跑起来-寻找资源网

步骤 6:验证完全离线也能跑

为了确认数据真的不会外传,我特意测试了没有网络连接的情况:拔掉网线或关闭 Wi-Fi 后,Ollama 依然能正常加载本地模型并完成 OCR 识别。这对财务、人事这种敏感数据场景来说,是一颗定心丸。

图片[9]-Ollama OCR 大模型:让发票、社保、照片识别在本地跑起来-寻找资源网

五、更进一步:用脚本批量识别发票

Ollama 最大的价值不只是“能聊天”,而是可以像调用本地 API 一样被脚本调用

Ollama 默认监听 http://localhost:11434,接口兼容 OpenAI 格式。用 Python 写个脚本,把图片转成 base64 传进去,就能批量提取发票信息。

下面是一个最简示例:

import requests
import base64

# 读取图片并转 base64
withopen("invoice.png", "rb") as f:
    image_base64 = base64.b64encode(f.read()).decode("utf-8")

# 调用本地 Ollama 模型
response = requests.post(
    "http://localhost:11434/v1/chat/completions",
    json={
        "model": "glm-ocr:q8_0",
        "messages": [
            {
                "role": "user",
                "content": [
                    {"type": "text", "text": "识别发票,提取发票代码、发票号码、开票金额、开票日期,以 JSON 格式返回。"},
                    {"type": "image_url", "image_url": {"url": f"data:image/png;base64,{image_base64}"}}
                ]
            }
        ]
    }
)

print(response.json()["choices"][0]["message"]["content"])

基于这个思路,我已经做了一个小工具:

  • 选择发票图片;
  • 自动调用 GLM-OCR 提取发票代码、号码、金额、日期;
  • 结果添加到表格,支持导出 Excel。

这样财务同事以后报销,直接拖图片进去,点“识别”,就能批量整理发票信息,再也不用人工录入。

图片[10]-Ollama OCR 大模型:让发票、社保、照片识别在本地跑起来-寻找资源网

图片[11]-Ollama OCR 大模型:让发票、社保、照片识别在本地跑起来-寻找资源网

六、总结一下

如果你也和我一样,经常需要:

  • 识别发票、社保资料、身份证照片;
  • 把图片里的文字自动化整理成 Excel/Word;
  • 担心在线 API 的隐私和费用问题;

那么强烈建议试试 Ollama + GLM-OCR 这条路线。

它的核心优势就是三点:

  1. 完全离线:模型跑在本地,敏感数据不上传;
  2. 一次下载,长期使用:没有 API 调用次数和费用的焦虑;
  3. 脚本化友好:可以嵌入 Python、PowerShell 或任何能调用 HTTP 的工具,真正
    做到办公自动化。

PS:其实我不是特别乐意写脚本,因为我发现业务+人事+财务其实很抵触这种,因为如果这种事都可以通过脚本来解决处理,他们是不是闲了,闲了的话领导是不是要安排其他工作,或者淘汰一部分人,工作是干不完的,但是我也没办法,我们领导让我搞,我也只能搞!一级一级压!

看完不过瘾,那就自己发一篇吧!
© 版权声明
THE END
喜欢就支持一下吧
点赞9 分享
相关推荐
评论 抢沙发

请登录后发表评论

    暂无评论内容