DeepSeek-OCR实现精确字符识别

DeepSeek-OCR实现精确字符识别

🐬 目录:


一、字符识别任务

OCR (Optical Character Recognition, 光学字符识别):一种将印刷体或手写文字转换为可编辑文本的技术,即将图像中的文字进行识别,并以文本的形式返回。

请添加图片描述

OCR识别技术主要依赖于图像处理模式识别算法,通过捕捉文档中的字符特征,如笔画、形状、大小、间距等,与预设的字符库进行比对,从而识别相应的文字信息。

二、技术细节

2025年10月20日,DeepSeek正式开源DeepSeek-OCR模型,并同步发布相关运行脚本、测试代码、DeepEncoder源码以及技术报告等全套资料。在技术实践层面,它是目前开源社区少数具备

端到端文档解析、语义理解与结构化生成能力 的轻量级多模态模型,参数仅约 3B,却能在A100单卡上实现高达 2500 tokens/s 的推理速度,极大降低了企业和研究者在多模态RAG系统中的部署门槛。 DeepSeek-OCR的框架图如下图所示:
在这里插入图片描述
DeepSeek-OCR采用统一的端到端视觉语言模型(VLM)架构,由编码器和解码器组成。编码器(DeepEncoder)负责提取图像特征、进行分词处理以及压缩视觉表示。解码器则基于图像分词结果和提示词生成所需输出。DeepEncoder参数规模约 3.8 亿,主要由8000万参数的SAM-base与3亿参参数的CLIP-large串联组成。解码器采用3B MOE架构,拥有5.7亿激活参数。具体而言,DeepSeek-OCR模型可实现以下几大核心功能:

1️⃣ OCR 纯文字提取: 支持对任意图像进行自由式文字识别,加速提取图片中的全部文本信息。
2️⃣ 保留版面格式的OCR提取:模型可自动识别并重建文档中的排版结构,包括段落、标题、页眉页脚、列表与多栏布局,实现“结构化文字输出”。
3️⃣ 图表&表格解析:DeepSeek-OCR不仅识别文本,还能解析图像中的结构化信息,如表格、流程图、建筑平面图等,自动识别单元格边界、字段对齐关系及数据对应结构,支持生成可机读的表格或文本描述。
4️⃣图片信息描述:借助其多模态理解能力,模型能够对整张图片进行语义级分析与详细描述,生成自然语言总结。
5️⃣ 指定元素位置锁定: 支持通过“视觉定位”功能,在图像中准确定位特定目标元素。例如,输入"Locate signature in the image",模型即可返回签名区域的坐标,实现基于语义的图像检索与目标检测。
6️⃣ Markdown文档转化:可将完整的文档图像直接转换为结构化Markdown文本,自动识别标题层级、段落结构、表格与列表格式,可实现文档数字化、知识库构建和多模态RAG场景的重要基础模块。

三、字符识别实战

在NVIDIA GPU上使用Huggingface的Transformers库进行推理。使用本地部署后进行推理,亲测使用虚拟环境为:

Python 3.12.9 + CUDA 11.8
torch == 2.6.0
transformers == 4.46.3
tokenizers == 0.20.3
einops (张量操作工具)
addict (字典操作模块)
easydict (简化字典操作)
pip install flash-attn==2.7.3 --no-build-isolation (flash-attn是一个高性能的GPU注意力加速库,常用于加速大模型中的Transformer注意力计算)(–no-build-isolation 创建一个临时的隔离虚拟环境)

模型下载

from huggingface_hub import snapshot_download
import os
os.environ['HTTP_PROXY'] = 'http://127.0.0.1:7890'  #使用代理。(只有在本地确实有代理程序,如clash等)在运行时才能生效
os.environ['HTTPS_PROXY'] = 'http://127.0.0.1:7890'
snapshot_download(
    repo_id="deepseek-ai/DeepSeek-OCR",
    local_dir="../../Pretrained-LLM/models/DeepSeek-OCR",  #指定下载路径
    local_dir_use_symlinks=False,
    resume_download=True,
    revision="main"
)

在这里插入图片描述
推理代码

from transformers import AutoModel, AutoTokenizer
import torch
import os
os.environ["CUDA_VISIBLE_DEVICES"] = '0'
model_path = '../../Pretrained-LLM/models/DeepSeek-OCR'

tokenizer = AutoTokenizer.from_pretrained(model_path, trust_remote_code=True)
model = AutoModel.from_pretrained(model_path, trust_remote_code=True, use_safetensors=True)
model = model.eval().cuda().to(torch.bfloat16)

# prompt = "<image>\nFree OCR. "
prompt = "<image>\n<|grounding|>Convert the document to markdown. "
image_file = 'news.png'
output_path = './ouput'

# infer(self, tokenizer, prompt='', image_file='', output_path = ' ', base_size = 1024, image_size = 640, crop_mode = True, test_compress = False, save_results = False):

# Tiny: base_size = 512, image_size = 512, crop_mode = False
# Small: base_size = 640, image_size = 640, crop_mode = False
# Base: base_size = 1024, image_size = 1024, crop_mode = False
# Large: base_size = 1280, image_size = 1280, crop_mode = False

# Gundam: base_size = 1024, image_size = 640, crop_mode = True

res = model.infer(tokenizer, prompt=prompt, image_file=image_file, output_path = output_path, base_size = 1024, image_size = 640, crop_mode=True, save_results = True, test_compress = True)

运行代码后,终端会打印下面的信息:

=====================                                                                                                                                                                                                                       
BASE:  torch.Size([1, 256, 1280])                                                                                                                                                                                                           
PATCHES:  torch.Size([6, 100, 1280])                                                                                                                                                                                                        
=====================                                                                                                                                                                                                                       
The attention layers in this model are transitioning from computing the RoPE embeddings internally through `position_ids` (2D tensor with the indexes of the tokens), to using externally computed `position_embeddings` (Tuple of tensors, containing cos and sin). In v4.46 `
position_ids` will be removed and `position_embeddings` will be mandatory.                                            
<|ref|>sub_title<|/ref|><|det|>[[5, 12, 152, 60]]<|/det|>          
## 观点·深度》》                                                                                                                                                                                                                                                              
                                                                                                                      
<|ref|>image<|/ref|><|det|>[[5, 95, 528, 560]]<|/det|>             
                                                                                                                      
<|ref|>sub_title<|/ref|><|det|>[[5, 608, 352, 656]]<|/det|>                                                                                                                                                                                 
## 用精品标注时代文艺创作的高度                                    
                                                                                                                                       
<|ref|>text<|/ref|><|det|>[[5, 707, 525, 920]]<|/det|>                                                                
近日揭晓的第十八届文华奖,作为文化和旅游部设立的专业舞台艺术领域政府最高奖项,通过优化奖项设置、放宽首演时间、扩大申报渠道等改革,进一步完善评奖机制,强化“十年磨一戏”的精品意识,捧出了舞台艺术繁荣发展的累累硕果。                                                           
                                                                                                                      
<|ref|>sub_title<|/ref|><|det|>[[570, 99, 812, 140]]<|/det|>                                                                                                                                                                                
## 年轻干部不妨多些“自找苦吃”                                      
                                                                                                                                                                                                                                            
<|ref|>text<|/ref|><|det|>[[570, 162, 952, 247]]<|/det|>                                                              
干部成长成熟成才的路上,从没有坦途捷径可走,只能是一步一个脚印爬坡过坎。                                                               
                                                                                                                      
<|ref|>sub_title<|/ref|><|det|>[[570, 303, 965, 344]]<|/det|>                                                                                                                                                                               
## 财评:“两新”精准,彰显宏观调控前瞻性有效性                      
                                                                                                                                                                                                                                            
<|ref|>text<|/ref|><|det|>[[570, 366, 947, 450]]<|/det|>                                                              
当前,“两新”政策的实施正在推动经济发展质量、结构、效益同步提升。                                                                       
                                                                                                                      
<|ref|>sub_title<|/ref|><|det|>[[570, 506, 789, 547]]<|/det|>                                                                                                                                                                               
## 银行网点增减应以便民为本                                        
                                                                                                                                                                                                                                            
<|ref|>text<|/ref|><|det|>[[570, 569, 965, 650]]<|/det|>                                                              
网点增减是银行出于经营管理考量的自主选择,但其底层逻辑应遵循便民惠民、降本增效。                                                       
                                                                                                                      
<|ref|>sub_title<|/ref|><|det|>[[570, 708, 789, 748]]<|/det|>                                                                          
## 算好“过紧日子”的两本账                                          
                                                                                                                      
<|ref|>text<|/ref|><|det|>[[570, 770, 946, 855]]<|/det|>                                                              
“过紧日子”不是捂紧钱包不花钱,而是该省的省、该花的花。                                                                
                                                                                                                      
<|ref|>text<|/ref|><|det|>[[592, 920, 720, 954]]<|/det|>           
查看更多深度评论                                                                                                                                                                                                                                                              
==================================================                                                                                                                                                                                                                            
image size:  (902, 565)                                                                                                                
valid image tokens:  760                                           
output texts tokens (valid):  471                                  
compression ratio:  0.62                                           
==================================================                 
===============save results:===============                        
image: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:00<00:00, 22429.43it/s]                               
other: 100%|████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 12/12 [00:00<00:00, 310689.19it/s] 

同时会生成output文件,里面包含文档中的images图像,识别后的markdown文本文件,以及如下的目标检测图像result_with_boxes.jpg图像。

请添加图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值