基于视觉模型的 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 作为接口服务方用于日常工作:

资源

相关推荐
憨憨睡不醒啊6 小时前
如何让LLM智能体开发助力求职之路——构建属于你的智能体开发知识体系📚📚📚
面试·程序员·llm
柯南二号7 小时前
深入理解 Agent 与 LLM 的区别:从智能体到语言模型
人工智能·机器学习·llm·agent
Q同学9 小时前
TORL:工具集成强化学习,让大语言模型学会用代码解题
深度学习·神经网络·llm
人肉推土机13 小时前
AI Agent 架构设计:ReAct 与 Self-Ask 模式对比与分析
人工智能·大模型·llm·agent
洗澡水加冰13 小时前
n8n搭建多阶段交互式工作流
后端·llm
中杯可乐多加冰17 小时前
【解决方案-RAGFlow】RAGFlow显示Task is queued、 Microsoft Visual C++ 14.0 or greater is required.
人工智能·大模型·llm·rag·ragflow·deepseek
Baihai IDP1 天前
“一代更比一代强”:现代 RAG 架构的演进之路
ai·llm·rag·genai·白海科技·检索增强生成
Q同学1 天前
Qwen3开源最新Embedding模型
深度学习·神经网络·llm
用户84913717547161 天前
🚀 为什么猫和狗更像?用“向量思维”教会 AI 懂语义!
人工智能·llm
AI大模型知识1 天前
Qwen3+Ollama本地部署MCP初体验
人工智能·llm