文章目录
-
-
- [一、先唠唠为啥选DeepSeek-OCR 2?比传统OCR强在哪?](#一、先唠唠为啥选DeepSeek-OCR 2?比传统OCR强在哪?)
- 二、实战准备:3分钟搞定环境搭建
- 三、核心实战:处理3类复杂文档,代码直接抄
- 四、进阶技巧:批量处理文件夹里的所有文档
- 五、最后唠两句: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,还有几个常用的库。别担心,命令行直接复制粘贴就行,一步到位!
首先安装依赖库,打开终端输入:
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工具用得更溜!
