基于视觉模型的 OCR 识别探究

目前,在日常工作中需要经常用到 OCR,而目前一些在线工具已不能满足需求,需要更高效的 OCR 工具来解决日常工作需要,于是把探究方向转向了视觉大模型。

OCR及其原理

OCR(Optical Character Recognition,光学字符识别)是一种将图像中的文字转换为可编辑文本的技术。广泛应用于文档数字化、车牌识别、手写识别等领域。其核心流程包括图像预处理、文本检测、字符识别和后处理

传统的 OCR 识别技术主要分为三类,对比如下:

技术类型 优点 缺点 适用场景
模板匹配 实现简单,速度快 对字体、大小变化敏感 固定格式文档识别
特征提取 灵活性较高,鲁棒性较好 特征设计复杂,对噪声敏感 印刷体识别、简单手写识别
深度学习 精度高,鲁棒性强,自动化 需要大量数据,计算资源要求高 复杂场景、多语言OCR

典型的开源方案代表是 Tesseract。此外,主要大厂也都提供了相关的 API 服务。

新方向:视觉模型

基于视觉模型的 OCR 识别依靠深度学习、统一框架等原理,采用端到端的方式,直接从图像中提取文本信息。对于复杂场景(如自然场景文本、多语言、手写体)有更强的适应能力,并且不需要人工预先设计识别规则和字符特征,模型会自动学习最优特征。

与传统 OCR 识别的对比如下:

性能对比 数据需求&泛化能力 适用场景
传统 OCR 1. 在固定字体、清晰背景下的精度较高,但在复杂场景中表现较差 2. 对噪声、形变、字体变化等鲁棒性较低 3. 计算速度较快,适合实时性要求高的场景 1. 需要少量标注数据,主要依赖人工设计的规则和特征 2. 泛化能力有限,难以适应新场景和新字体 1. - 固定格式文档(如银行支票、发票) 2. 印刷体文本识别 3. 对实时性要求高的场景(如车牌识别)
视觉模型 1. 在复杂场景(如自然场景、多语言、手写体)中精度显著高于传统OCR 2. 对噪声、形变、字体变化等有更强的鲁棒性 3. 计算速度较慢,但随着模型优化和硬件加速,逐渐接近实时性要求 1. 需要大量标注数据进行预训练和微调 2. 泛化能力强,能够适应多种场景、语言和字体 1. 自然场景文本识别(如街景、广告牌) 2. 多语言、多字体文本识别 3. 手写体识别 4. 复杂背景下的文本提取

开源的视觉模型很多,代表有 Qwen2-VLLLAMA 以及 PaddleOCR。此外,很多云服务也都提供了相关的 API 接口,如 Google Vision API

以上内容参考了 deepseek-v3,请谨慎识别

本地接入视觉模型

以 Meta 的 LLAMA 为例,介绍本地接入模型的流程:

  1. 安装 Ollama
  2. 拉取 LLAMA 模型:ollama run llama3.2-vision:11b
  3. 用 React/Vue 等框架的脚手架创建一个项目,核心代码如下:
js 复制代码
// 引入 ollama
import { Ollama } from 'ollama/browser' // 浏览器端

import { Ollama } from 'ollama' // node端接入

// 其它代码

const response = await ollama.generate({
  model: 'llama3.2-vision:11b', // 也可以是 LLava 等其它 Ollama 支持的模型
  prompt: 'Please look at this image and extract all the text content. Structure the output as JSON',
  stream: false,
  images: [图片的 base64 数据], 
  // 以 json 形式输出识别结果,也可以通过 prompt 让 llama 以 markdown/text 等格式输出结果
  format: 'json' // format 是 ollama 的接口参数
})

console.log(response?.response) // 输出识别结果

以上,就可在本地接入模型。也可以在 docker 搜索:debounce/ollama-ocr,快速运行 demo。

ollama ocr 源代码:github.com/dwqs/ollama...

OCR 识别 PK

在工作中我用到 OCR 的场景主要有两个:

  1. 识别某段简短文本
  2. 识别接口数据

结合这两个具体场景,对各方案进行一个识别对比:

掘金的编辑器不支持在表格中插入图片,更清晰的对比结果请点击原文查看

从上述对比结果看,有如下结论:

  • llama 对中文的识别支持不太好,Text + Image 场景下,对英语的支持是最优的
  • llama / MiniCPM / Qwen2-VL 对接口数据的识别是最强的,识别结果可以直接用,其它几个模型都需要二次排版
  • PaddleOCR / MiniCPM / Qwen2-VL 都支持中文识别

DeepSeek

DeepSeek 上月开源了两款模型:DeepSeek-VL2DeepSeek-V3。V3 的发布在国内外的 AI 领域都引发了很多的讨论,它以一个极低的训练成本达到了极佳的训练效果,无论是和 Meta 的开源模型 LLaMA3.1 还是和闭源模型 GPT-4o/Claude-3.5 对比,各项测评指标都不分伯仲或略微领先,但训练成本预估是后三者的 1/11 - 1/8,人送 AI 界的「拼多多」, 每百万输入 tokens 的价格低到了 0.1 CNY。

DeepSeek 是杭州的量化基金公司幻方量化开发的,A股股民对此作出了不可磨灭的贡献🐶🐶🐶

VL2 是视觉模型,我用上面三张图测试了 VL 的第一个版本 ,从测试结果看,第一个版本对中文的识别跟 llama 不分上下😂😂😂。鉴于 DeepSeek-V3 相较于 DeepSeek-V2 有了很大的飞跃,我对于 VL2 的改进也有所期待,后续可以研究一下怎么进行本地接入。

我也拿图片去试了 DeepSeek-V3 模型,发现其识别结果也不错(从上到下,依次是上面四张图的结果):

看来在日常工作中,大语言模型也是 OCR 识别应用的一个方向。如果想体验 DeepSeek V3,可以下载 VSCode 的 Cline 插件,配置 DeepSeek 作为接口服务方用于日常工作:

资源

相关推荐
CoderJia程序员甲9 小时前
GitHub 热榜项目 - 日榜(2026-01-19)
git·ai·开源·llm·github
DO_Community15 小时前
技术解码:Character.ai 如何实现大模型实时推理性能 2 倍提升
人工智能·算法·llm·aigc·moe·aiter
YuTaoShao16 小时前
提示词工程已死,上下文工程当立
llm·agent·智能体·提示词工程·上下文工程
一个处女座的程序猿18 小时前
LLMs之MoE之Thinking:LongCat-Flash-Thinking-2601的简介、安装和使用方法、案例应用之详细攻略
llm·moe·thinking
眠りたいです18 小时前
使用LangChain进行AI应用构建-快速上手,定义模型和调用工具部分
人工智能·langchain·llm·ollama·python3.13
doll ~CJ19 小时前
Large Language Model(LLM)应用开发学习实践(一)
langchain·llm·ai agent·应用开发·通义千问系列大模型
EdisonZhou1 天前
MAF快速入门(12)主工作流+子工作流
llm·aigc·agent·.net core
人工干智能2 天前
LangChain 中的「工具(Tool)」和「工具包(Toolkit)」漫谈
langchain·llm
山顶夕景2 天前
【VLM】Format Decoupled Reinforcement Learning for Document OCR
大模型·llm·ocr·多模态·文档智能·vlm
用什么都重名2 天前
「实战指南」使用 Python 调用大模型(LLM)
python·大模型·llm·api调用