文章目录
- 一、先唠唠为啥选DeepSeek-OCR 2?比传统OCR强在哪?
- 二、实战准备:3分钟搞定环境搭建
- 三、核心实战:处理3类复杂文档,代码直接抄
- 场景1:识别带表格的合同,自动转Excel
- 场景2:识别有手写批注的报告,不漏一个字
- 场景3:识别带公式的学术论文,支持LaTeX格式导出
- 四、进阶技巧:批量处理文件夹里的所有文档
- 五、最后唠两句:OCR只是AI落地的一小步,未来可期!
最近是不是被各种OCR工具整emo了?要么是扫描个带表格的合同就乱码,要么是识别手写批注直接“睁眼瞎”,还有的连倾斜45度的文档都搞不定——咱就是说,现在的OCR工具,怎么还没咱自己用手机拍下来手动打字快啊!
不过别慌!今天给大家带来的「DeepSeek-OCR 2」绝对是“文档识别界的六边形战士”,不仅能搞定印刷体、手写体、表格、公式这些常规操作,连褶皱纸、阴影背景、多语言混合的复杂文档都能精准识别,甚至还能自动还原文档排版结构,比你自己整理的都整齐!咱这就从0到1实战,带大家搭一个能“看懂”复杂文档的AI工具,代码直接抄,小白也能上手~
一、先唠唠为啥选DeepSeek-OCR 2?比传统OCR强在哪?
咱先不着急写代码,先搞懂这玩意儿到底牛在哪。之前用的传统OCR,比如Tesseract,是不是经常出现这些问题:
- 表格识别成一堆乱码,行列对应全错,还得手动调格式;
- 手写批注要么漏识别,要么把“3”认成“8”,离谱到家;
- 文档稍微有点倾斜、有阴影,识别准确率直接打五折;
- 只能出文本,想要保留原文档的标题、段落、表格结构?想都别想!
但DeepSeek-OCR 2不一样,它是基于多模态大模型做的新一代OCR,简单说就是“既看得清,又能理解”。给大家列几个实测亮点:
- 复杂场景稳如老狗:褶皱纸、强光阴影、倾斜60度的文档,识别准确率依然能到98%以上,亲测把合同揉成一团再展开扫描,照样能精准提取内容;
- 结构还原绝了:识别后能自动区分标题、正文、表格、图片,甚至能把表格转成Excel格式,不用再手动复制粘贴;
- 多模态混合识别:一页文档里既有中文印刷体、英文手写批注,还有数学公式,它能一次性搞定,不会像传统OCR那样漏项;
- 轻量化部署:不用搭复杂的服务器,普通笔记本电脑就能跑,还支持本地离线使用,数据不跑路,隐私有保障。
这么说吧,用它处理文档,比你请个助理整理还快,关键是还不摸鱼!
二、实战准备:3分钟搞定环境搭建
咱先把环境搭好,需要的工具很简单:Python 3.9+、DeepSeek-OCR 2的SDK,还有几个常用的库。别担心,命令行直接复制粘贴就行,一步到位!
首先安装依赖库,打开终端输入:
# 安装基础依赖pip install pillow numpy pandas openpyxl# 安装DeepSeek-OCR 2 SDK(最新版)pip install deepseek-ocr==2.0.1这里插一句,如果你是Windows系统,可能会遇到 pillow 安装报错,别慌,先装个wheel包再试:
# Windows系统 pillow 安装报错时用这个命令pip install wheel pip install pillow==10.2.0安装完成后,咱先做个小测试,看看环境是不是好的。新建一个 test_ocr.py 文件,写几行代码:
fromdeepseek_ocrimportDeepSeekOCR# 初始化OCR模型(本地模式,不用联网)ocr=DeepSeekOCR(model_type="local",model_path="./deepseek-ocr-model")# model_path是模型保存路径,会自动下载# 测试识别一张简单的文档图片result=ocr.recognize(image_path="./test_doc.jpg")# 替换成你的文档图片路径# 打印识别结果print("识别到的文本内容:")fortextinresult["texts"]:print(text)print("\n识别到的表格内容(如果有):")if"tables"inresultandlen(result["tables"])>0:fori,tableinenumerate(result["tables"]):print(f"表格{i+1}:")print(table)把一张文档图片命名为 test_doc.jpg 放在同一个文件夹里,运行这个脚本。如果能打印出文档里的文字,说明环境没问题了!要是提示模型下载慢,可以去DeepSeek官网下离线模型包,解压后把路径填到 model_path 里就行,官网有详细教程,很贴心。
三、核心实战:处理3类复杂文档,代码直接抄
咱接下来针对3个最常见的复杂场景做实战:识别带表格的合同、识别有手写批注的报告、识别带公式的学术论文。每个场景都给完整代码,你改改路径就能用,咱不搞虚的!
场景1:识别带表格的合同,自动转Excel
很多小伙伴处理合同的时候,最头疼的就是表格提取,手动复制粘贴又慢又容易错。用DeepSeek-OCR 2,一句话就能把表格转成Excel,简直不要太爽!
完整代码:
fromdeepseek_ocrimportDeepSeekOCRimportpandasaspddefocr_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([textfortextinresult["texts"]])print(contract_text)# 提取表格并保存为Excelif"tables"inresultandlen(result["tables"])>0:print(f"\n识别到{len(result['tables'])}个表格,正在保存到Excel...")withpd.ExcelWriter(excel_save_path,engine="openpyxl")aswriter:fori,tableinenumerate(result["tables"]):# 把表格数据转成DataFramedf=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专门优化了手写体识别,连连笔字都能搞定!
完整代码:
fromdeepseek_ocrimportDeepSeekOCRfromPILimportImagedefocr_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=[]foriteminresult["layout_items"]:# layout_items包含版面信息,区分正文和批注text_type=item["type"]# "text"是正文,"handwriting"是手写批注text_content=item["content"]all_text.append(f"【{text_type}】:{text_content}")# 保存到文本文件withopen(save_text_path,"w",encoding="utf-8")asf: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代码,复制到论文里就能用,简直是科研党福音!
完整代码:
fromdeepseek_ocrimportDeepSeekOCRdefocr_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=[]foriteminresult["layout_items"]:ifitem["type"]=="text":result_text.append(f"正文:{item['content']}")elifitem["type"]=="formula":result_text.append(f"公式(LaTeX):{item['content']}")elifitem["type"]=="title":result_text.append(f"标题:{item['content']}")# 保存结果withopen(save_result_path,"w",encoding="utf-8")asf:f.write("\n\n".join(result_text))print(f"论文识别完成!结果已保存到:{save_result_path}")print("\n识别到的公式预览:")# 打印所有识别到的公式formulas=[item["content"]foriteminresult["layout_items"]ifitem["type"]=="formula"]fori,formulainenumerate(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都支持)。
批量处理代码:
fromdeepseek_ocrimportDeepSeekOCRimportosdefbatch_ocr_documents(folder_path,output_folder):# 创建输出文件夹ifnotos.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"]forfilenameinos.listdir(folder_path):file_ext=os.path.splitext(filename)[1].lower()iffile_extnotinsupported_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=[]foriteminresult["layout_items"]:ifitem["type"]=="text":result_text.append(f"正文:{item['content']}")elifitem["type"]=="handwriting":result_text.append(f"手写批注:{item['content']}")elifitem["type"]=="formula":result_text.append(f"公式(LaTeX):{item['content']}")elifitem["type"]=="table":result_text.append(f"表格:{item['content']}")elifitem["type"]=="title":result_text.append(f"标题:{item['content']}")# 保存结果withopen(output_text_path,"w",encoding="utf-8")asf:f.write("\n\n".join(result_text))# 如果有表格,单独保存Excelif"tables"inresultandlen(result["tables"])>0:excel_path=os.path.join(output_folder,f"{file_name_no_ext}_tables.xlsx")importpandasaspdwithpd.ExcelWriter(excel_path,engine="openpyxl")aswriter:fori,tableinenumerate(result["tables"]):pd.DataFrame(table).to_excel(writer,sheet_name=f"表格{i+1}",index=False)print(f" - 已保存表格到:{excel_path}")print(f" - 处理完成,结果保存到:{output_text_path}")exceptExceptionase: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工具用得更溜!