2026/2/19 4:13:34
网站建设
项目流程
vs网站模板,wordpress 搜索分类,网课编程,网页界面设计pptLangchain1.0实战#xff1a;OCR 多模态PDF解析系统
本文将带你完整了解#xff1a;
多模态 OCR 的核心诉求与落地权衡热门开源 OCR 项目横向对比实战#xff1a;基于 Langchain 1.0 的 多模态PDF解析系统#xff0c;其中集成了 PaddleOCR、MinerU、DeepSeek-OCR 三大热门…Langchain1.0实战OCR 多模态PDF解析系统本文将带你完整了解多模态 OCR 的核心诉求与落地权衡热门开源 OCR 项目横向对比实战基于 Langchain 1.0 的 多模态PDF解析系统其中集成了 PaddleOCR、MinerU、DeepSeek-OCR 三大热门 OCR 项目扫描下方二维码找 小助理 免费领取完整项目源码演示视频一、多模态 OCR 的核心诉求与落地权衡目前企业在做的大部分业务场景都是以正确识别不同文档类型的内容为前提比如处理 图片/PDF 等 格式的发票、合同、财报、收据通过 OCR 把这些文档转换为结构化的数据为后续的存储、检索、分析做支撑。就目前的发展来看单纯“图像 → 文本”的简单转换远远不够的而是要做到同时理解 视觉图像、语言文本、版面结构布局、场景环境上下文 等多模态信息。对于复杂的 PDF 或图像文档系统需要能同时识别文字、图像、表格、公式甚至页面的逻辑结构与阅读顺序。正因如此企业在落地多模态 OCR 项目时往往需要在“性能”“生态”“资源开销”“易集成性”等维度之间做权衡。二、热门开源 OCR 项目对比MinerUMinerUhttps://github.com/opendatalab/MinerUMinerU 提供在线 Demo 。试用地址https://opendatalab.com/OpenSourceTools/Extractor/PDF/MinerU 由 OpenDataLab上海人工智能实验室团队发起目标是将复杂 PDF 转换为可机读的结构化格式Markdown / JSON。其设计并非传统意义上的“OCR 识字”而是“完整复现文档结构”。MinerU 的核心价值在于它提供了一条完整的处理管线文档预处理检测语言、页面、扫描状态内容解析区分文本、表格、图像与公式支持公式 LaTeX 输出版面还原修复元素重叠重建自然阅读顺序结构化输出统一导出 Markdown / JSONMinerU 的主要工作流程分为以下几个阶段输入接收PDF 格式文本可以是简单的纯文本也可以是包含双列文本、公式、表格或图等多模态PDF文件;文档预处理Document Preprocessing检查语言、页面大小、文件是否被扫描以及加密状态内容解析Content Parsing局分析区分文本、表格和图像。公式检测和识别识别公式类型内联、显示或忽略并将其转换为 LaTeX 格式。表格识别以 HTML/LaTeX 格式输出表格。OCR对扫描的 PDF 执行文本识别。内容后处理Content Post-processing修复文档解析后可能出现的问题。比如解决文本、图像、表格和公式块之间的重叠并根据人类阅读模式重新排序内容确保最终输出遵循自然的阅读顺序。格式转换Format Conversion以 Markdown 或 JSON 格式生成输出。输出Output高质量、结构良好的解析文档。MinerU 实现了三个不同的处理后端每个后端针对不同的用例和硬件配置进行了优化。其中Pipeline后端是默认的也是最通用的后端MinerU 后端默认模型配置后端类型默认模型适用场景资源需求VLM-TransformerMinerU2.5-2509-1.2B高精度解析中等 GPUVLM-SGLangMinerU2.5-2509-1.2B高速推理高端 GPUPipelinePDF-Extract-Kit-1.0轻量部署CPU 友好在部署和使用方面MinerU 支持Linux、Windows、MacOS 多平台部署的本地部署并且其中用的到布局识别模型、OCR 模型、公式识别模型、表格识别模型都是开源的我们可以直接下载到本地进行使用。而且MinerU 项目是完全支持华为昇腾系列芯片的可适用性非常广。PaddleOCR-VLPaddleOCRhttps://github.com/PaddlePaddle/PaddleOCR/tree/mainPaddleOCR 由百度团队基于 PaddlePaddle 框架构建是生态最成熟的 OCR 工具箱之一。其最新模块 PaddleOCR-VL 引入了视觉-语言模型VLM架构能够在解析过程中综合考虑图像与文本两种信息。在解析多模态数据方面PaddleOCR将这项工作分为个阶段首先检测并排序布局元素。使用紧凑的视觉语言模型精确识别每个元素。第一阶段是执行布局分析PP-DocLayoutV2此部分标识文本块、表格、公式和图表。它使用RT-DETR 用于物体检测基本上是边界框 类标签。指针网络 6 个转换器层可确定元素的读取顺序 从上到下、从左到右等。最终输出统一模式的图片标注数据如下图所示第二阶段则是元素识别PaddleOCR-VL-0.9B这就是视觉语言模型发挥作用的地方。它使用NaViT 风格编码器 来自 Keye-VL可处理动态图像分辨率。无平铺无拉伸。一个简单的 2 层 MLP 用于将视觉特征与语言空间对齐。ERNIE-4.5–0.3B 作为语言模型该模型规模虽小但速度很快并且采用 3D-RoPE 进行位置编码最终模型输出结构化 Markdown 或 JSON 格式的文件用于后续的处理。这种“布局 识别”分离的架构使得 PaddleOCR-VL 比通常的一体化系统更快、更稳定。另外在多语言支持方面PaddleOCR 已覆盖 100 语种是国际化项目的常用选择。DeepSeek-OCRDeepSeek-OCRhttps://github.com/deepseek-ai/DeepSeek-OCRDeepSeek 团队在 2025 年推出的 DeepSeek-OCR 聚焦于“以最小资源消耗实现高精度识别”。模型仅需 7GB 显存即可运行支持表格、公式、图像文字及图表语义识别。DeepSeek-OCR 提供基于 Transformers 与 vLLM 的启动示例可轻松嵌入现有解析管线中。其提出”光学上下文压缩“技术达到用远少于传统模型的“视觉 tokens”达到类似或更好的表现。dots.ocrdots.ocrhttps://github.com/dots-ai/dots.ocr由 rednote-hilab 开发的 dots.ocr 采用了单一 VLM 模型约 1.7B 参数完成布局检测 内容识别 阅读顺序排序三合一任务。用户可通过 prompt 控制模型行为例如输出版式元素的类别、边界框与文本内容。这种“Prompt VLM”模式使系统在多语言、多版式文档中具有极强的通用性。不过在极复杂表格跨页、合并单元格或特殊排版中仍存在一定局限。综合对比从企业落地视角来看这四个项目并无绝对的“优劣之分”选型应该根据实际需求与资源条件进行评估项目核心特点MinerU多模块全流程解析PaddleOCR-VL双阶段视觉语言模型DeepSeek-OCR光学上下文压缩技术dots.ocrPrompt 驱动统一模型三、实战基于 Langchain 1.0 的 多模态PDF解析系统完整项目代码扫码添加 小助理 免费领取还有更多Agent、数据分析等课程等你来学项目基于 Langchain 1.0 框架集成了 PaddleOCR、MinerU、DeepSeek-OCR 三大热门 OCR 项目项目演示视频MinerU 项目概览与 vLLM 服务接口本文是在Linux系统下安装MinerU项目并进行文档解析实战。其他操作系统可以参考如下链接进行自行实践Windows 10/11 GPU Docker 部署 ,1 MinerU 源码安装CUDA 版本检查在 Linux 系统下通过 nvidia-smi 命令查看 CUDA 版本CUDA Version 显示的版本号必须 12.1如显示的版本号小于12.1请自行升级CUDA 版本。下载MinerU源码文件截止目前最新的MinerU项目源码版本为是2.6.4-released但当前版本的源码在使用MCP Server时存在一些Bug所以我们针对源码做了一些修改。因此大家一定要找 小助理 免费领取网盘中的源码文件进行部署和使用。下载后上传至服务器中解压文件并进入解压后的文件夹# 解压unzip MinurU-master.zip创建并激活虚拟环境cd MinerU-master conda create --name mineru_2.5 python3.11 -y conda activate mineru_2.5安装 MinerU 项目依赖pip install -e .[all] -i https://mirrors.aliyun.com/pypi/simple检查 MinerU 安装pip show mineru输出版本号则说明安装成功下载 MinerU 中用到的模型文件运行一键下载所有模型文件的脚本mineru-models-download执行该命令需要我们根据自己的需求灵活的选择要下载到本地的模型。其中modelscope 和 huggingface 是两个不同的模型下载源我们只需要选择其中一个即可。pipeline指的是用于文档解析的一系列模型而vlm指的是用于视觉语言模型的模型即MinerU2.0-2505-0.9B 模型。如果是all则会全部下载。等待下载完成后所有模型文件的默认存储路径是/root/.cache/modelscope/hub/models/OpenDataLabMinerU 启动vLLM API 推理服务接下来新打开一个终端启动mineru-api 服务export MINERU_MODEL_SOURCElocal # 注意这里需要将模型源设置为本地 export CUDA_VISIBLE_DEVICES3 # 使用 哪一块GPU mineru-api --host 192.168.110.131 --port 50000 # 这里换为你的IPMinerU vLLM API服务连接测试及项目实现下面我们通过一个完整的代码示例来演示如何调用 OCR 服务。#!/usr/bin/env python3测试 MinerU API 的不同 backend通过 50000 端口调用传递不同的 backend 参数来使用不同的模型import requestsimport sysfrom pathlib import Pathdef test_mineru_api(pdf_path: str, backend: str pipeline): 测试 MinerU API Args: pdf_path: PDF 文件路径 backend: 后端类型可选值 - pipeline (默认使用本地 PyTorch) - vlm-vllm-async-engine (使用 vLLM 加速) api_url http://192.168.130.4:50000/file_parse print(f\n{*60}) print(f测试 MinerU API with backend: {backend}) print(f{*60}) print(fAPI URL: {api_url}) print(fPDF 文件: {pdf_path}) print(fBackend: {backend}) print() # 检查文件是否存在 ifnot Path(pdf_path).exists(): print(f错误: 文件不存在 - {pdf_path}) returnNone try: # 打开文件并发送请求 with open(pdf_path, rb) as f: files [(files, (Path(pdf_path).name, f, application/pdf))] data { backend: backend, parse_method: auto, lang_list: ch, return_md: true, return_middle_json: false, return_model_output: false, return_content_list: false, start_page_id: 0, end_page_id: 1, # 只处理前2页快速测试 } print(发送请求...) response requests.post( api_url, filesfiles, datadata, timeout300 ) # 检查响应 if response.status_code ! 200: print(f请求失败: HTTP {response.status_code}) print(f响应: {response.text[:500]}) returnNone # 解析 JSON 响应 result response.json() # 提取信息 backend_used result.get(backend, unknown) version result.get(version, unknown) results result.get(results, {}) print(f请求成功!) print(f 使用的 backend: {backend_used}) print(f 版本: {version}) print(f 结果数量: {len(results)}) # 提取 markdown 内容 if results: file_key list(results.keys())[0] md_content results[file_key].get(md_content, ) print(f\nMarkdown 内容预览 (前500字符):) print(- * 60) print(md_content[:500]) print(- * 60) # 保存 markdown 到文件 output_file foutput_{backend}.md with open(output_file, w, encodingutf-8) as f: f.write(md_content) print(f\n完整 Markdown 已保存到: {output_file}) return md_content else: print(未找到结果) returnNone except Exception as e: print(f测试失败: {e}) import traceback traceback.print_exc() return Nonedef main(): # 默认测试文件 pdf_path ./2507.05595v1.pdf print(f\n开始测试 MinerU API 的不同 backend) print(f测试文件: {pdf_path}\n) # 测试 1: pipeline backend (本地 PyTorch) print(\n *60) print(测试 1: pipeline backend (本地 PyTorch)) print(*60) result_pipeline test_mineru_api(pdf_path, backendpipeline) # 测试 2: vLLM backend (vLLM 加速) print(\n *60) print(测试 2: vlm-vllm-async-engine backend (vLLM 加速)) print(*60) result_vllm test_mineru_api(pdf_path, backendvlm-vllm-async-engine) # 总结 print(\n *60) print(测试总结) print(*60) print(fPipeline backend: {成功 if result_pipeline else 失败}) print(fvLLM backend: {成功 if result_vllm else 失败}) if result_pipeline and result_vllm: print(\n所有测试通过! MinerU 可以通过 backend 参数切换不同模型) print(\n 提示:) print( - pipeline: 使用本地 PyTorch适合调试) print( - vlm-vllm-async-engine: 使用 vLLM 加速速度更快)if __name__ __main__: main()项目中 MinerU 的核心代码逻辑完整项目代码扫码添加 小助理 免费领取还有更多Agent、数据分析课程等你来学PaddleOCR-VL 部署与 vLLM 服务启动安装 PaddleOCR-VL 并启动 vLLM 服务创建并激活虚拟环境conda create -n ppocr-vllm python3.11 -y conda activate ppocr-vllm安装 PaddleOCR 工具框架这里安装 PaddlePaddle 3.2.0 版本。执行如下命令python -m pip install paddlepaddle-gpu3.2.0 -i https://www.paddlepaddle.org.cn/packages/stable/cu126/接下来要重点关注的是PaddleOCR-VL 使用 safetensors 格式存储模型权重需要额外安装同时需要安装指定版本的执行如下命令python -m pip install https://paddle-whl.bj.bcebos.com/nightly/cu126/safetensors/safetensors-0.6.2.dev0-cp38-abi3-linux_x86_64.whl通过 modelscope 下载PaddleOCR-VL模型pip install modelscope新建一个 download_paddleocr_vl.py 文件写入如下代码from modelscope import snapshot_download # 下载完整模型包含 PaddleOCR-VL-0.9B 和 PP-DocLayoutV2 model_dir snapshot_download(PaddlePaddle/PaddleOCR-VL, local_dir.)运行新建的 download_paddleocr_vl.py 文件执行如下命令python download_paddleocr_vl.py下载完成后的模型目录结构如下所示安装依赖包python -m pip install paddleocr[doc-parser]然后使用 PaddleOCR CLI 安装 vLLM 的推理加速服务依赖paddleocr install_genai_server_deps vllm安装 flash-atten 编译包pip install https://github.com/Dao-AILab/flash-attention/releases/download/v2.7.3/flash_attn-2.7.3cu12torch2.8cxx11abiFALSE-cp311-cp311-linux_x86_64.whl启动vLLM 服务器服务器了。如下代码所示paddlex_genai_server \ --model_name PaddleOCR-VL-0.9B \ --backend vllm \ --host 0.0.0.0 \ --port 8118vLLM 服务启动后保持这个终端窗口运行不要关闭。同时打开一个新的终端使用paddlex连接启动的paddleocr-vl服务首先进行初始化服务配置paddlex --install serving然后生成 .yaml 配置文件paddlex --get_pipeline_config PaddleOCR-VL找到 genai_config 配置项修改为如下所示最后启动 PaddleOCR API 服务paddlex --serve --pipeline PaddleOCR-VL.yaml --port 10800 --host 192.168.110.131 --paddle_model_dir /home/MuyuWorkSpace/02_OcrRagPaddleOCR vLLM API服务连接测试及项目实现下面我们通过一个完整的代码示例来演示如何调用 OCR 服务。import base64import jsonimport requestsimport os# 1. 服务端地址 SERVER_URL http://192.168.130.4:10800/layout-parsing# 2. 待处理文件路径 input_path ./course.pdf # 也可以是 test.pngoutput_md result.md# 3. 读取文件并转为 Base64 with open(input_path, rb) as f: file_base64 base64.b64encode(f.read()).decode(utf-8)# 4. 构造 JSON 请求体 payload { file: file_base64, fileType: 0if input_path.lower().endswith(.pdf) else1, prettifyMarkdown: True, visualize: False,}headers {Content-Type: application/json}# 5. 发送请求 resp requests.post(SERVER_URL, headersheaders, datajson.dumps(payload))# 6. 解析响应 if resp.status_code 200: data resp.json() if data.get(errorCode) 0: # PDF 的结果在 layoutParsingResults 数组中 results data[result][layoutParsingResults] md_text for i, page in enumerate(results, 1): md_text f\n\n# Page {i}\n\n md_text page[markdown][text] with open(output_md, w, encodingutf-8) as f: f.write(md_text) print(f成功生成 Markdown{output_md}) else: print(f服务端错误{data.get(errorMsg)})else: print(fHTTP 错误{resp.status_code}) print(resp.text)项目中PaddleOCR 的核心代码逻辑DeepSeek-OCR 部署与 vLLM 服务启动DeepSeek-OCR模型下载创建并激活虚拟环境conda create --name deepseek-ocr-vllm python3.10 conda activate deepseek-ocr-vllm接下来在ModelScope 平台下载 DeepSeek-OCR 模型文件。pip install modelscope新建 download_deepseek_ocr.py 文件内容如下from modelscope import snapshot_download model_dir snapshot_download(deepseek-ai/DeepSeek-OCR,local_dir.)接下来执行如下代码进行模型权重安装python download_deepseek_ocr.pyDeepseek-OCR vLLM 项目文件DeepSeek-OCR通过 vLLM 平台启动我们是借助DeepSeek-OCR官方提供的项目代码并做了一些优化和调整其官方源码下载地址https://github.com/deepseek-ai/DeepSeek-OCR/tree/main/DeepSeek-OCR-master/DeepSeek-OCR-vllm其中deepseek_ocr.py 和 flash_attn-2.7.3cu12torch2.6cxx11abiFALSE-cp310-cp310-linux_x86_64.whl 使我们给大家提供的两个核心文件一个用于封装 DeepSeek OCR API 接口另一个则是离线安装的 fla_ttn 的离线安装包。pip install flash_attn-2.7.3cu12torch2.6cxx11abiFALSE-cp310-cp310-linux_x86_64.whl安装 vLLM 运行 DeepSeek-OCR的依赖包pip install -r requirements.txt启动命令如下python ocr_client.py --model-path /home/data/nongwa/workspace/model/OCR/DeepSeek-OCR --gpu-id 3 --port 8797 --host 192.168.110.131DeepSeek-OCR API 连接测试及项目实现下面我们通过一个完整的代码示例来演示如何调用 OCR 服务。#!/usr/bin/env python3# -*- coding: utf-8 -*-测试 DeepSeek-OCR API直接调用 API 并保存返回的 markdown 和图像数据import requestsimport jsonimport sysfrom pathlib import Pathdef test_deepseek_ocr(pdf_path: str, output_dir: str ./test_output): 测试 DeepSeek-OCR API Args: pdf_path: PDF 文件路径 output_dir: 输出目录 # API 配置 api_url http://192.168.130.4:8797/ocr # 确保输出目录存在 output_path Path(output_dir) output_path.mkdir(parentsTrue, exist_okTrue) print(f测试文件: {pdf_path}) print(fAPI 地址: {api_url}) print(f输出目录: {output_dir}) print(- * 60) # 读取 PDF 文件 try: with open(pdf_path, rb) as f: files {file: (Path(pdf_path).name, f, application/pdf)} # API 参数 data { enable_description: false, # 是否生成图片描述 } print(发送请求到 DeepSeek API...) # 发送请求 response requests.post( api_url, filesfiles, datadata, timeout300 ) if response.status_code ! 200: print(fAPI 返回错误: {response.status_code}) print(f错误信息: {response.text[:500]}) returnFalse # 解析响应 result response.json() print(fAPI 响应成功) print(f响应包含的字段: {list(result.keys())}) print(- * 60) # 提取数据 markdown_content result.get(markdown, ) page_count result.get(page_count, 0) images_data result.get(images, {}) print(fMarkdown 长度: {len(markdown_content)} 字符) print(f页数: {page_count}) print(f图像数量: {len(images_data)}) if images_data: print(f图像列表:) for img_key in list(images_data.keys())[:10]: img_size len(images_data[img_key]) print(f - {img_key}: {img_size} 字符 (base64)) print(- * 60) # 保存 Markdown md_file output_path / f{Path(pdf_path).stem}_deepseek.md with open(md_file, w, encodingutf-8) as f: f.write(markdown_content) print(fMarkdown 已保存: {md_file}) # 保存完整响应 json_file output_path / f{Path(pdf_path).stem}_response.json with open(json_file, w, encodingutf-8) as f: # 为了避免文件过大只保存图像的部分信息 simplified_result { markdown: markdown_content, page_count: page_count, images_count: len(images_data), image_keys: list(images_data.keys()) } json.dump(simplified_result, f, ensure_asciiFalse, indent2) print(f响应摘要已保存: {json_file}) # 保存图像数据可选如果需要 if images_data: images_file output_path / f{Path(pdf_path).stem}_images.json with open(images_file, w, encodingutf-8) as f: json.dump(images_data, f, ensure_asciiFalse, indent2) print(f图像数据已保存: {images_file}) # 统计信息 print(- * 60) print(统计信息:) # 统计表格数量 import re table_count len(re.findall(rtable, markdown_content, re.IGNORECASE)) print(f - HTML 表格: {table_count} 个) # 统计图片引用 img_ref_count len(re.findall(r!\[.*?\]\(.*?\), markdown_content)) print(f - Markdown 图片引用: {img_ref_count} 个) # 统计行数 line_count len(markdown_content.split(\n)) print(f - Markdown 行数: {line_count} 行) print(- * 60) print(测试完成) returnTrue except FileNotFoundError: print(f文件不存在: {pdf_path}) returnFalse except requests.exceptions.Timeout: print(f请求超时) returnFalse except Exception as e: print(f发生错误: {e}) import traceback traceback.print_exc() returnFalsedef main(): 主函数 success test_deepseek_ocr( pdf_path./course.pdf, output_dir./)if __name__ __main__: main()项目中DeepSeek-OCR 的核心代码逻辑OCR 多模态解析系统后端服务启动需要依次执行如下操作配置环境变量 (.env 文件)# Server Configuration PORT8000 HOST0.0.0.0 DEBUGTrue # MinerU Configuration MINERU_API_URLhttp://192.168.110.131:50000/file_parse VLLM_SERVER_URLhttp://192.168.110.131:40000 MINERU_BACKENDvlm-vllm-async-engine MINERU_TIMEOUT600 MINERU_VIZ_DIR/home/MuyuWorkSpace/05_OcrProject/backend/mineru_visualizations # DeepSeek OCR Configuration DEEPSEEK_OCR_API_URLhttp://192.168.110.131:8797/ocr # PaddleOCR Configuration PADDLEOCR_API_URLhttp://192.168.110.131:10800/layout-parsing # File Upload Limits MAX_FILE_SIZE10485760 ALLOWED_FILE_TYPESapplication/pdf,image/png,image/jpeg,image/jpg,image/webp # CORS Settings ALLOWED_ORIGINShttp://localhost:3000,http://localhost:5173启动后端服务cd backend # 创建并激活虚拟环境 python -m venv venv source venv/bin/activate # Linux/Mac # 或 venv\Scripts\activate # Windows # 安装依赖 pip install -r requirements.txt # 启动服务 python main.py其中配置说明配置项说明MINERU_BACKENDpipeline: 使用本地 PyTorchvlm-vllm-async-engine: 使用 vLLM 加速VLLM_SERVER_URLvLLM 服务器地址仅在使用 vLLM 时需要MINERU_API_URLMinerU API 服务地址前端服务启动需要依次执行如下操作:# 1. 进入前端目录 cd frontend # 2. 安装依赖 npm install # 3. 启动开发服务器 npm run dev启动成功后即可通过http://localhost:3000访问应用。学AI大模型的正确顺序千万不要搞错了2026年AI风口已来各行各业的AI渗透肉眼可见超多公司要么转型做AI相关产品要么高薪挖AI技术人才机遇直接摆在眼前有往AI方向发展或者本身有后端编程基础的朋友直接冲AI大模型应用开发转岗超合适就算暂时不打算转岗了解大模型、RAG、Prompt、Agent这些热门概念能上手做简单项目也绝对是求职加分王给大家整理了超全最新的AI大模型应用开发学习清单和资料手把手帮你快速入门学习路线:✅大模型基础认知—大模型核心原理、发展历程、主流模型GPT、文心一言等特点解析✅核心技术模块—RAG检索增强生成、Prompt工程实战、Agent智能体开发逻辑✅开发基础能力—Python进阶、API接口调用、大模型开发框架LangChain等实操✅应用场景开发—智能问答系统、企业知识库、AIGC内容生成工具、行业定制化大模型应用✅项目落地流程—需求拆解、技术选型、模型调优、测试上线、运维迭代✅面试求职冲刺—岗位JD解析、简历AI项目包装、高频面试题汇总、模拟面经以上6大模块看似清晰好上手实则每个部分都有扎实的核心内容需要吃透我把大模型的学习全流程已经整理好了抓住AI时代风口轻松解锁职业新可能希望大家都能把握机遇实现薪资/职业跃迁这份完整版的大模型 AI 学习资料已经上传CSDN朋友们如果需要可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费】