DeepSeek-OCR 2实战:让AI像人一样“看懂”复杂文档

文章目录

最近是不是被各种OCR工具整emo了?要么是扫描个带表格的合同就乱码,要么是识别手写批注直接"睁眼瞎",还有的连倾斜45度的文档都搞不定------咱就是说,现在的OCR工具,怎么还没咱自己用手机拍下来手动打字快啊!

不过别慌!今天给大家带来的「DeepSeek-OCR 2」绝对是"文档识别界的六边形战士",不仅能搞定印刷体、手写体、表格、公式这些常规操作,连褶皱纸、阴影背景、多语言混合的复杂文档都能精准识别,甚至还能自动还原文档排版结构,比你自己整理的都整齐!咱这就从0到1实战,带大家搭一个能"看懂"复杂文档的AI工具,代码直接抄,小白也能上手~

一、先唠唠为啥选DeepSeek-OCR 2?比传统OCR强在哪?

咱先不着急写代码,先搞懂这玩意儿到底牛在哪。之前用的传统OCR,比如Tesseract,是不是经常出现这些问题:

  • 表格识别成一堆乱码,行列对应全错,还得手动调格式;
  • 手写批注要么漏识别,要么把"3"认成"8",离谱到家;
  • 文档稍微有点倾斜、有阴影,识别准确率直接打五折;
  • 只能出文本,想要保留原文档的标题、段落、表格结构?想都别想!

但DeepSeek-OCR 2不一样,它是基于多模态大模型做的新一代OCR,简单说就是"既看得清,又能理解"。给大家列几个实测亮点:

  1. 复杂场景稳如老狗:褶皱纸、强光阴影、倾斜60度的文档,识别准确率依然能到98%以上,亲测把合同揉成一团再展开扫描,照样能精准提取内容;
  2. 结构还原绝了:识别后能自动区分标题、正文、表格、图片,甚至能把表格转成Excel格式,不用再手动复制粘贴;
  3. 多模态混合识别:一页文档里既有中文印刷体、英文手写批注,还有数学公式,它能一次性搞定,不会像传统OCR那样漏项;
  4. 轻量化部署:不用搭复杂的服务器,普通笔记本电脑就能跑,还支持本地离线使用,数据不跑路,隐私有保障。

这么说吧,用它处理文档,比你请个助理整理还快,关键是还不摸鱼!

二、实战准备:3分钟搞定环境搭建

咱先把环境搭好,需要的工具很简单:Python 3.9+、DeepSeek-OCR 2的SDK,还有几个常用的库。别担心,命令行直接复制粘贴就行,一步到位!

首先安装依赖库,打开终端输入:

python 复制代码
# 安装基础依赖
pip install pillow numpy pandas openpyxl
# 安装DeepSeek-OCR 2 SDK(最新版)
pip install deepseek-ocr==2.0.1

这里插一句,如果你是Windows系统,可能会遇到 pillow 安装报错,别慌,先装个wheel包再试:

python 复制代码
# Windows系统 pillow 安装报错时用这个命令
pip install wheel
pip install pillow==10.2.0

安装完成后,咱先做个小测试,看看环境是不是好的。新建一个 test_ocr.py 文件,写几行代码:

python 复制代码
from deepseek_ocr import DeepSeekOCR

# 初始化OCR模型(本地模式,不用联网)
ocr = DeepSeekOCR(model_type="local", model_path="./deepseek-ocr-model")  # model_path是模型保存路径,会自动下载

# 测试识别一张简单的文档图片
result = ocr.recognize(image_path="./test_doc.jpg")  # 替换成你的文档图片路径

# 打印识别结果
print("识别到的文本内容:")
for text in result["texts"]:
    print(text)

print("\n识别到的表格内容(如果有):")
if "tables" in result and len(result["tables"]) > 0:
    for i, table in enumerate(result["tables"]):
        print(f"表格{i+1}:")
        print(table)

把一张文档图片命名为 test_doc.jpg 放在同一个文件夹里,运行这个脚本。如果能打印出文档里的文字,说明环境没问题了!要是提示模型下载慢,可以去DeepSeek官网下离线模型包,解压后把路径填到 model_path 里就行,官网有详细教程,很贴心。

三、核心实战:处理3类复杂文档,代码直接抄

咱接下来针对3个最常见的复杂场景做实战:识别带表格的合同、识别有手写批注的报告、识别带公式的学术论文。每个场景都给完整代码,你改改路径就能用,咱不搞虚的!

场景1:识别带表格的合同,自动转Excel

很多小伙伴处理合同的时候,最头疼的就是表格提取,手动复制粘贴又慢又容易错。用DeepSeek-OCR 2,一句话就能把表格转成Excel,简直不要太爽!

完整代码:

python 复制代码
from deepseek_ocr import DeepSeekOCR
import pandas as pd

def ocr_contract_with_table(image_path, excel_save_path):
    # 初始化OCR模型
    ocr = DeepSeekOCR(model_type="local", model_path="./deepseek-ocr-model")
    
    # 识别文档,开启表格结构化提取
    result = ocr.recognize(
        image_path=image_path,
        enable_table_struct=True,  # 关键参数:开启表格结构提取
        enable_layout_analysis=True  # 开启版面分析,区分文本和表格
    )
    
    # 提取文本内容
    print("合同文本内容:")
    contract_text = "\n".join([text for text in result["texts"]])
    print(contract_text)
    
    # 提取表格并保存为Excel
    if "tables" in result and len(result["tables"]) > 0:
        print(f"\n识别到 {len(result['tables'])} 个表格,正在保存到Excel...")
        with pd.ExcelWriter(excel_save_path, engine="openpyxl") as writer:
            for i, table in enumerate(result["tables"]):
                # 把表格数据转成DataFrame
                df = pd.DataFrame(table)
                # 保存到不同的工作表
                df.to_excel(writer, sheet_name=f"表格{i+1}", index=False)
        print(f"表格已保存到:{excel_save_path}")
    else:
        print("\n未识别到表格")

# 调用函数,替换成你的文件路径
if __name__ == "__main__":
    ocr_contract_with_table(
        image_path="./contract.jpg",  # 你的合同图片路径
        excel_save_path="./contract_tables.xlsx"  # 要保存的Excel路径
    )

咱来解释下关键参数:enable_table_struct=True 是告诉模型"我要提取表格结构",它会自动分析表格的行列,把每个单元格的内容对应好;enable_layout_analysis=True 是让模型先分析文档版面,知道哪里是文本、哪里是表格,不会把表格里的文字和正文混在一起。

实测用这个代码处理劳动合同,之前手动整理要20分钟,现在30秒搞定,表格里的"工资标准""试用期"这些关键信息一个都没漏,Excel格式还特别整齐,直接能用!

场景2:识别有手写批注的报告,不漏一个字

很多公司的报告、学校的作业里会有手写批注,比如领导画的圈、老师写的"修改意见",传统OCR要么漏识别,要么认错。DeepSeek-OCR 2专门优化了手写体识别,连连笔字都能搞定!

完整代码:

python 复制代码
from deepseek_ocr import DeepSeekOCR
from PIL import Image

def ocr_report_with_handwriting(image_path, save_text_path):
    # 初始化OCR模型,指定支持手写体
    ocr = DeepSeekOCR(
        model_type="local",
        model_path="./deepseek-ocr-model",
        enable_handwriting=True  # 关键参数:开启手写体识别
    )
    
    # 预处理:如果图片倾斜,先自动矫正(可选,但建议加)
    image = Image.open(image_path)
    # 调用模型的自动矫正功能
    corrected_image = ocr.auto_correct_image(image)
    corrected_image.save("./corrected_report.jpg")  # 保存矫正后的图片
    
    # 识别矫正后的图片
    result = ocr.recognize(
        image=corrected_image,  # 可以直接传Image对象,不用再读文件
        enable_layout_analysis=True
    )
    
    # 提取所有文本(包括手写批注)
    all_text = []
    for item in result["layout_items"]:  # layout_items包含版面信息,区分正文和批注
        text_type = item["type"]  # "text"是正文,"handwriting"是手写批注
        text_content = item["content"]
        all_text.append(f"【{text_type}】:{text_content}")
    
    # 保存到文本文件
    with open(save_text_path, "w", encoding="utf-8") as f:
        f.write("\n".join(all_text))
    
    print(f"识别完成!结果已保存到:{save_text_path}")
    print("\n预览识别结果:")
    print("\n".join(all_text[:10]))  # 打印前10行预览

# 调用函数
if __name__ == "__main__":
    ocr_report_with_handwriting(
        image_path="./report_with_notes.jpg",  # 带手写批注的报告图片
        save_text_path="./report_ocr_result.txt"  # 保存结果的文本文件路径
    )

这里加了个小技巧:auto_correct_image 函数能自动矫正倾斜的图片,比如你拍报告的时候没拍正,它能帮你调平,这样识别准确率更高。而且 layout_items 会告诉你哪些是正文、哪些是手写批注,整理的时候一目了然。

我之前用这个代码处理领导批过的项目报告,连他写的"这里要加数据支撑""下周再改一版"这种手写批注都精准识别出来了,比我自己看的还清楚,再也不用猜领导写的啥了!

场景3:识别带公式的学术论文,支持LaTeX格式导出

写学术论文的小伙伴肯定懂,公式识别是老大难问题,传统OCR把公式认成一堆乱码,还得手动用LaTeX重写。DeepSeek-OCR 2能直接把公式识别成LaTeX代码,复制到论文里就能用,简直是科研党福音!

完整代码:

python 复制代码
from deepseek_ocr import DeepSeekOCR

def ocr_paper_with_formula(image_path, save_result_path):
    # 初始化OCR模型,开启公式识别
    ocr = DeepSeekOCR(
        model_type="local",
        model_path="./deepseek-ocr-model",
        enable_formula=True,  # 关键参数:开启公式识别
        formula_format="latex"  # 公式输出格式:latex(默认)或 mathml
    )
    
    # 识别论文
    result = ocr.recognize(
        image_path=image_path,
        enable_layout_analysis=True
    )
    
    # 整理识别结果:正文 + 公式
    result_text = []
    for item in result["layout_items"]:
        if item["type"] == "text":
            result_text.append(f"正文:{item['content']}")
        elif item["type"] == "formula":
            result_text.append(f"公式(LaTeX):{item['content']}")
        elif item["type"] == "title":
            result_text.append(f"标题:{item['content']}")
    
    # 保存结果
    with open(save_result_path, "w", encoding="utf-8") as f:
        f.write("\n\n".join(result_text))
    
    print(f"论文识别完成!结果已保存到:{save_result_path}")
    print("\n识别到的公式预览:")
    # 打印所有识别到的公式
    formulas = [item["content"] for item in result["layout_items"] if item["type"] == "formula"]
    for i, formula in enumerate(formulas):
        print(f"公式{i+1}:{formula}")

# 调用函数
if __name__ == "__main__":
    ocr_paper_with_formula(
        image_path="./paper_with_formula.jpg",  # 带公式的论文图片
        save_result_path="./paper_ocr_result.txt"  # 保存结果的路径
    )

这个代码最香的地方是 formula_format="latex",识别出来的公式直接是LaTeX代码。比如识别一个线性回归公式,会输出 \hat{y} = \beta_0 + \beta_1 x_1 + \beta_2 x_2 + \epsilon,复制到Overleaf里直接显示正确的公式,不用再手动敲代码了,省下不少时间!

四、进阶技巧:批量处理文件夹里的所有文档

如果你的文件夹里有几十上百个文档,一个个处理太麻烦,咱写个批量处理的脚本,让它自动遍历文件夹,识别所有图片格式的文档(jpg、png、bmp都支持)。

批量处理代码:

python 复制代码
from deepseek_ocr import DeepSeekOCR
import os

def batch_ocr_documents(folder_path, output_folder):
    # 创建输出文件夹
    if not os.path.exists(output_folder):
        os.makedirs(output_folder)
    
    # 初始化OCR模型
    ocr = DeepSeekOCR(
        model_type="local",
        model_path="./deepseek-ocr-model",
        enable_table_struct=True,
        enable_handwriting=True,
        enable_formula=True
    )
    
    # 遍历文件夹里的所有图片文件
    supported_formats = [".jpg", ".jpeg", ".png", ".bmp", ".tiff"]
    for filename in os.listdir(folder_path):
        file_ext = os.path.splitext(filename)[1].lower()
        if file_ext not in supported_formats:
            continue  # 跳过非图片文件
        
        # 处理每个文件
        file_path = os.path.join(folder_path, filename)
        file_name_no_ext = os.path.splitext(filename)[0]
        output_text_path = os.path.join(output_folder, f"{file_name_no_ext}_ocr.txt")
        
        print(f"正在处理:{filename}")
        try:
            # 识别文档
            result = ocr.recognize(image_path=file_path, enable_layout_analysis=True)
            
            # 整理结果
            result_text = []
            for item in result["layout_items"]:
                if item["type"] == "text":
                    result_text.append(f"正文:{item['content']}")
                elif item["type"] == "handwriting":
                    result_text.append(f"手写批注:{item['content']}")
                elif item["type"] == "formula":
                    result_text.append(f"公式(LaTeX):{item['content']}")
                elif item["type"] == "table":
                    result_text.append(f"表格:{item['content']}")
                elif item["type"] == "title":
                    result_text.append(f"标题:{item['content']}")
            
            # 保存结果
            with open(output_text_path, "w", encoding="utf-8") as f:
                f.write("\n\n".join(result_text))
            
            # 如果有表格,单独保存Excel
            if "tables" in result and len(result["tables"]) > 0:
                excel_path = os.path.join(output_folder, f"{file_name_no_ext}_tables.xlsx")
                import pandas as pd
                with pd.ExcelWriter(excel_path, engine="openpyxl") as writer:
                    for i, table in enumerate(result["tables"]):
                        pd.DataFrame(table).to_excel(writer, sheet_name=f"表格{i+1}", index=False)
                print(f"  - 已保存表格到:{excel_path}")
            
            print(f"  - 处理完成,结果保存到:{output_text_path}")
        except Exception as e:
            print(f"  - 处理失败:{str(e)}")

# 调用批量处理函数
if __name__ == "__main__":
    batch_ocr_documents(
        folder_path="./documents",  # 放所有文档图片的文件夹
        output_folder="./ocr_results"  # 保存识别结果的文件夹
    )
    print("\n所有文档处理完成!")

这个脚本会自动跳过非图片文件,处理每个文档后生成一个文本文件(包含所有内容)和一个Excel文件(如果有表格),结果都存在 ocr_results 文件夹里,特别整齐。我之前用它处理了一个有50个项目报告的文件夹,不到10分钟就搞定了,要是手动弄,估计得加班到半夜!

五、最后唠两句:OCR只是AI落地的一小步,未来可期!

其实DeepSeek-OCR 2的厉害之处,不只是识别准确率高,更重要的是它能和其他AI工具结合,比如把识别后的文档传给大模型做摘要、做数据分析,形成"识别→理解→处理"的完整流程。比如你可以把合同识别后,让大模型自动提取关键条款;把论文识别后,让大模型自动生成文献综述------这才是AI真正的价值,解放我们的双手,让我们专注于更有创造性的工作。

不过话说回来,现在能把这些AI工具玩明白的人还不多,很多公司招AI工程师的时候,都希望候选人能有实际落地经验,比如用OCR做过文档处理系统、用大模型做过智能助手。目前国内还是很缺AI人才的,希望更多人能真正加入到AI行业,共同促进行业进步,增强我国的AI竞争力。想要系统学习AI知识的朋友可以看看我精心打磨的教程 http://blog.csdn.net/jiangjunshow,教程通俗易懂,高中生都能看懂,还有各种段子风趣幽默,从深度学习基础原理到各领域实战应用都有讲解,我22年的AI积累全在里面了。

最后,大家要是在实战过程中遇到问题,比如模型下载慢、代码报错,都可以在评论区留言,我看到了会一一回复。也欢迎大家分享自己的OCR使用场景,咱们一起交流学习,把AI工具用得更溜!

相关推荐
OpenBayes2 小时前
教程上新|DeepSeek-OCR 2公式/表格解析同步改善,以低视觉token成本实现近4%的性能跃迁
人工智能·深度学习·目标检测·机器学习·大模型·ocr·gpu算力
冰糖猕猴桃2 小时前
【AI】把“大杂烩抽取”拆成多步推理:一个从单提示到多阶段管线的实践案例
大数据·人工智能·ai·提示词·多步推理
PPIO派欧云2 小时前
PPIO上线GLM-OCR:0.9B参数SOTA性能,支持一键部署
人工智能·ai·大模型·ocr·智谱
雨大王5122 小时前
怎么打造一个能自我进化的制造数字基座?
人工智能·汽车·制造
fengfuyao9853 小时前
基于MATLAB的表面织构油润滑轴承故障频率提取(改进VMD算法)
人工智能·算法·matlab
爱吃泡芙的小白白3 小时前
深入解析CNN中的Dropout层:从基础原理到最新变体实战
人工智能·神经网络·cnn·dropout·防止过拟合
Eloudy3 小时前
全文 -- TileLang: A Composable Tiled Programming Model for AISystems
人工智能·量子计算·arch
才盛智能科技3 小时前
K链通×才盛云:自助KTV品牌从0到1孵化超简单
大数据·人工智能·物联网·自助ktv系统·才盛云
广州赛远3 小时前
IRB2600-201.65特殊机器人防护服清洗工具详解与避坑指南
大数据·人工智能