1

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

OCR及其原理

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

image.png

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

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

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

新方向:视觉模型

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

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

性能对比数据需求&泛化能力适用场景
传统 OCR1. 在固定字体、清晰背景下的精度较高,但在复杂场景中表现较差

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 等框架的脚手架创建一个项目,核心代码如下:
// 引入 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 源代码:https://github.com/dwqs/ollama-ocr

OCR 识别 PK

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

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

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

输入图片OCR在线识别工具TesseractLLAMA-3.2MiniCPM-V 2.6Qwen2-VLPaddleOCR
中文.pngimage.pngimage.pngimage.pngimage.pngimage.pngimage.png
en.pngimage.pngimage.pngimage.pngimage.pngimage.pngimage.png
json.pngimage.pngimage.pngimage.pngimage.pngimage.pngimage.png
222.pngimage.pngimage.pngimage.pngimage.pngimage.pngimage.png
OCR在线识别工具调用的是百度 API

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

  • 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 模型,发现其识别结果也不错(从上到下,依次是上面四张图的结果):

deepseekv3-test.png

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

Cline.png

资源

LLM-rank.png


我是星礼
12.7k 声望1.1k 粉丝

Front-end Dev Handbook: 前端开发者手册