2026/1/16 4:49:07
网站建设
项目流程
深圳专业网站建设制作,中牟建设局网站,跨境外贸是做什么的,wordpress分页加载1.MinerU vs PaddleOCR中间态.json文件对比
博主将MinerU与PaddleOCR解析PDF的中间态.json文件进行对比#xff0c;发现#xff1a;二者在公式、表格、图片表现都类似。如果表格中有合并单元格#xff0c;则二者识别都会出现问题。
MinerU能够将表格的脚注、题目等都作为同一…1.MinerU vs PaddleOCR中间态.json文件对比博主将MinerU与PaddleOCR解析PDF的中间态.json文件进行对比发现二者在公式、表格、图片表现都类似。如果表格中有合并单元格则二者识别都会出现问题。MinerU能够将表格的脚注、题目等都作为同一个字典的不同key字段比如表格2会将3个字段都放入同一个字典对象中。同样地MinerU在图片上也能将题目、图片主体、脚注都放在同一个字典对象中。PaddleOCR在表格、图片上都不能实现这一点PaddleOCR的处理方式是将表格的3个属性作为并列的3个字典顺序放置而不是作为同一个字典对象。事实上对于生产环境需要处理大量复杂文档我们需要的不是PDF解析的markdown文件而是中间态.json文件因此在表格、图片的整体的完整性来说MinrU胜出。下图中是MinerU识别Table 2的效果但在MinerU的.json文件中图片主体解析内容找不到只是识别出了图片。而PaddleOCR是能够识别图片主体的内容的。这一块PaddleOCR胜出。下图中是MinerU识别Figure 1的效果综合对比下来MinerU的表现稍好。解析PDF有价值吗MinerU和PaddleOCR这类解析PDF文档的工具有什么价值呢在RAG和Deep Research应用中多格式文件的解析始终是一大挑战word、ppt等格式的文件解析的技术栈已经非常成熟了但对于结构复杂、排版方式多样的PDF文件目前没有一个非常完美的技术栈。因此只要PDF解析技术能够攻克RAG、Deep Research的效果能大大增强。在RAG应用中MinerU能够将复杂PDF文档转换为结构化数据为大模型提供高质量的检索材料。例如将学术论文中的公式、表格和图表提取为LaTeX、HTML和Markdown格式便于大模型理解文档内容并生成高质量的回答。在Deep Research应用中MinerU的价值更为突出。深度研究通常需要处理大量复杂文档提取关键信息并进行分析。MinerU能够自动识别文档中的多模态内容包括文本、公式、表格和图片等并将它们转换为机器可读的格式为后续的语义分析、知识提取和数据挖掘提供基础。MinerU的模块化设计和中间态JSON文件使得它特别适合与大模型结合使用。例如可以将中间态JSON文件作为大模型的输入让模型理解文档的结构和内容或者将大模型的输出与中间态JSON文件结合进行更深入的分析和推理。这种结合可以充分发挥大模型的语义理解和推理能力同时利用MinerU的文档解析能力实现更智能的研究和应用。2. MinerU处理复杂PDF文档的技术优势一MinerU集成多模型针对不同类型的文档元素使用专门优化的模型进行处理。例如对于第1步布局检测MinerU集成了DocLayout-YOLO、YOLO-v10和LayoutLMv3三种模型可根据文档类型选择最适合的模型进行处理。这些模型经过大量复杂PDF文档的微调在论文、教科书、研究报告和财务报告等多样化文档上实现了准确的提取结果。二MinerU的微调策略通过使用多格式的PDF文档注释数据对模型进行微调MinerU能够更好地适应各种复杂文档类型。例如DocLayout-YOLO在大规模、多样化的合成文档数据集DocSynth-300K上进行了预训练使其能更好地泛化到现实世界中各种复杂的文档布局 。同时MinerU还针对特定任务进行了专门优化如公式识别使用了UniMERNet这是一种为现实世界场景中的各种公式识别而设计的算法能够处理复杂的长公式、手写公式和嘈杂的截图公式。三MinerU的模块化设计通过将文档解析过程分解为多个独立但协同工作的模块MinerU能够灵活应对不同类型的文档挑战。这种设计使得每个模块都能专注于特定任务同时整体流程又能保持高效和准确。例如对于扫描版PDFMinerU会自动启用OCR模式而对于文本型PDF则直接提取文本内容避免不必要的处理步骤。四MinerU的中间态JSON文件与PaddleOCR一样MinerU的中间态JSON文件具备的灵活性。该文件包含了完整的文档解析信息包括页面元数据、元素坐标、类型分类、OCR文本、公式LaTeX代码、表格结构等。我们可以根据需求自定义输出格式如Markdown、HTML或JSON也可以提取特定元素进行深入分析。这种设计使得MinerU不仅能够满足基本的文档转换需求还能支持更复杂的下游应用如RAG系统和知识图谱构建。3. 布局检测和模型选择的关联机制MinerU的布局检测是整个文档解析流程的第一步其质量直接影响后续所有任务的效果。MinerU提供了多种布局检测模型包括DocLayout-YOLO、YOLO-v10和LayoutLMv3这些模型各有特点适用于不同类型的文档。布局检测模型的选择直接影响后续解析任务的执行方式和效果。例如DocLayout-YOLO是基于YOLO目标检测框架进行优化的将版面分析任务视为计算机视觉中的对象检测问题 。该模型在DocSynth-300K数据集上进行了预训练并引入了GL-CRM模块使模型能够灵活调整其视野从而有效处理从单行标题到整页表格等不同尺度的版面元素 。这种全局到局部的感受野使其在检测表格边界和公式区域时具有优势。相比之下LayoutLMv3则更擅长理解文档中的文本布局和语义关系。该模型通过整合视觉和语言信息能够更好地识别文本块之间的层次结构这对于确定阅读顺序和段落划分非常关键。因此MinerU会根据文档类型和内容特点灵活选择最适合的布局检测模型。布局检测模型的输出结果是后续所有解析任务的基础。这些结果以JSON格式存储包含每个检测到的元素的类型、边界框坐标和置信度等信息为公式检测、表格识别和OCR等任务提供了精确的定位和分类。例如当检测到表格区域时系统会调用表格识别模型进行处理当检测到公式区域时则会调用公式识别模型。这种基于布局检测结果的任务触发机制确保了处理流程的高效和精准。4. PDF分类方法实现机制MinerU的PDF分类方法决定了后续使用哪种解析策略。PDF分类主要通过分析文档元数据、内容特征和格式类型来实现具体包括以下几个方面一MinerU会检查PDF的元数据确定其基本类型。例如判断文档是否为扫描版图像型PDF、文本型PDF可复制文本或图层型PDF文本不可复制解析乱码。这种初步分类有助于确定是否需要启用OCR处理。对于扫描版PDFMinerU会自动启用OCR模式而对于文本型PDF则直接提取文本内容提高处理效率。二MinerU会分析文档内容特征如图像占比、文本结构和排版方式等。比如通过检测文档中是否存在大量图像或表格来判断是否需要使用特定的模型进行处理。这种基于内容特征的分类有助于选择最适合的模型组合提高解析质量。三MinerU还支持通过我们配置参数指定解析方法。比如我们可以通过命令行参数--method指定使用ocr、txt或auto模式后者会根据文档类型自动选择最佳解析策略。这种设计既考虑了自动化处理也提供了手动控制的灵活性。在代码实现中PDF分类主要通过classify()方法完成。该方法接收PDF的二进制数据作为输入返回SupportedPdfParseMethod枚举值指示应使用OCR还是TXT方法进行解析。具体实现可能包括以下几个步骤检查PDF是否为扫描版这通常通过检测文档是否主要由图像组成来实现。分析文档中的文本可复制性判断是否为图层型PDF。检测文档是否存在乱码这可能与编码格式或字体嵌入有关。根据上述分析结果结合文档类型如论文、财务报告等确定最佳解析方法。需要说明MinerU的PDF分类方法并不是一个独立的模型而是结合了多种分析技术和逻辑判断。这种设计使得分类过程更加高效和准确同时避免了额外的模型开销。5. OCR处理后的文本语义连贯性保障MinerU在OCR处理后的文本语义连贯性保障方面采用了多种技术手段。文本语义连贯性主要通过布局分析和跨距结果处理来实现确保提取的文本符合人类的阅读顺序。一MinerU使用DocLayout-YOLO等模型进行布局分析准确定位文档中的文本块、表格、图片和公式等元素的位置和层次关系。这种布局信息为后续的文本排序提供了基础确保提取的文本按照文档的实际排版顺序排列。二MinerU实现了基于版面的文本排序和拼接机制。在管线处理阶段系统会根据布局检测结果确定块级别的顺序删减无用元素并依靠版面对内容排序、拼装保证正文流畅。处理方式包括坐标修复、高iou处理、图片与表格描述合并、公式替换、图标转储、Layout排序、无用移出和复杂布局过滤等。三MinerU还支持多语言OCR处理使用PaddleOCR模型识别80多种语言的文本。对于混合语言文档系统会自动识别并转换为相应的语言格式减少语义混乱的可能性。在代码实现中OCR处理后的文本语义连贯性保障主要通过pipe_ocr_mode()和pipe_txt_mode()方法完成。这些方法接收OCR或文本提取的结果结合布局信息生成结构化的中间态JSON文件其中包含了文本块的位置、类型和内容等信息。我们作为使用者可以根据这些信息进一步调整文本的顺序和格式确保语义连贯。值得注意的是MinerU的文本语义连贯性保障并不是一个完美的过程特别是在处理高度复杂或非标准排版的文档时。因此系统提供了中间态JSON文件方面我们进行人工检查和调整确保提高文本的语义连贯性。6. 表格识别MinerU的表格识别模块并不是孤立的而是与布局检测、OCR和公式识别等模块紧密协作。布局检测模型会先定位表格区域OCR模型提取表格中的文本表格识别模型再根据这些信息重建表格结构。MinerU提供了两种表格识别方式StructEqTable和PaddleOCRTableMaster它们在技术实现和适用场景上有显著差异。StructEqTable更适合处理复杂中文表格和需要高质量结构化输出的场景如学术论文、财务报告等。而****PaddleOCRTableMaster则更适合资源受限环境或处理简单表格如发票、名片等。特性StructEqTablePaddleOCRTableMaster技术原理多模态大模型端到端解析OCR文本提取表格结构识别语言支持优秀特别是中文良好依赖OCR语言支持处理速度较慢依赖GPU算力较快算法轻量复杂表格处理强支持合并单元格、跨页表格弱主要处理简单表格输出格式LaTeX/HTML/MarkdownHTML算力需求高需要GPU低CPU即可部署复杂度高模型较大低模块化设计7. 多页PDF的并行处理机制从demo代码来看MinerU目前主要采用顺序处理的方式处理多页PDF文档。在doc_analyze()函数中系统会遍历所有页面按顺序处理每一页的内容。这种设计虽然简单但在处理多页PDF时可能存在性能瓶颈。然而MinerU的架构设计为多页PDF的并行处理提供了可能性。具体来说框架的分页抽象Dataset和apply()方法允许通过多进程/线程拆分页面任务实现并行处理。例如可以将PDF的不同页面分配给不同的处理线程充分利用多核CPU或GPU的计算资源提高处理速度。在代码实现中PymuDocDataset类实现了页面的迭代和访问使得系统能够按需获取特定页面的数据。这种设计使得并行处理成为可能因为每个页面可以独立处理无需依赖其他页面的结果。此外ModelSingleton类管理模型实例确保模型只初始化一次避免了并行处理中的重复初始化开销。博主发现MinerU的并行处理能力目前尚未在官方版本中完全实现但通过框架的模块化设计我们可以根据需求自行扩展。比如在apply()方法中可以添加多进程支持将页面处理任务分配给不同的进程。或者使用线程池提高处理效率。这种灵活性是MinerU作为开源工具的重要优势。8.中间态JSON文件的价值中间态JSON文件是MinerU处理流程中的关键产出具有多方面的重要价值和作用。一中间态JSON文件提供了完整的文档解析信息包括页面元数据、元素坐标、类型分类、OCR文本、公式LaTeX代码、表格结构等。因此我们能够根据需求自定义输出格式如Markdown、HTML或JSON也可以提取特定元素进行深入分析。例如可以仅提取文档中的公式或表格用于后续的数学符号识别或表格数据提取。二这种中间态JSON文件支持灵活的后处理和定制化MinerU的管线处理阶段会将模型解析得到的数据输入到处理管线中进行后处理如确定块级别的顺序、删减无用元素、依靠版面对内容排序、拼装等。这些处理方式包括坐标修复、高iou处理、图片与表格描述合并、公式替换、图标转储、Layout排序、无用移出和复杂布局过滤等。通过中间态JSON文件你可以修改这些处理逻辑添加自己的后处理步骤或调整现有步骤的参数以满足特定需求。三便于人工质检和错误修正在MinerU生成的middle.json中间态文档中每个块都是一个元素包含相应的页码、位置、类型和内容等信息。这使得人工检查错误如公式识别错误、表格边界偏差时能够精确定位问题所在并进行修正。例如可以修改中间态JSON中的公式内容然后重新生成Markdown文件无需重新运行整个解析流程。四适合生产环境中间态JSON文件为下游应用提供了统一的数据接口无论是RAG系统、知识图谱构建还是其他文档处理应用都可以基于中间态JSON文件进行开发无需了解底层的模型和处理逻辑。这种统一的数据接口降低了集成难度提高了系统的可扩展性。在代码实现中中间态JSON文件通过pipe_result.get_middle_json()方法获取并通过pipe_result.dump_middle_json()方法保存到文件。你可以修改这些方法添加自定义的后处理逻辑或调整JSON结构来满足特定需求。需要提醒中间态JSON文件的结构和内容会随着MinerU版本的更新而变化。比如在0.9.2版本中MinerU集成了StructTable-InternVL2-1B模型以实现表格识别功能而在0.9.0版本中系统进行了广泛的代码重构优化了配置文件功能开关添加了独立的公式检测开关提高了处理速度和内存使用效率。9.MinerU部署教程及源代码逻辑MinerU本地部署教程一PowerShell 中运行下面代码创建Conda环境并安装magic-pdf[full]conda create -n mineru python3.12 -yconda activate minerupip install -U magic-pdf[full] -i https://mirrors.aliyun.com/pypi/simple二PowerShell 中运行下面代码拉取MinerU源码git clone https://github.com/opendatalab/MinerU.gitcd Mineru三PowerShell 中运行下面代码从modelscope下载模型pip install modelscopepython mineru/cli/models_download.py四PowerShell 中运行下面代码使用国内 Hugging Face 镜像源$env:HF_ENDPOINThttps://hf-mirror.com五PowerShell 中运行下面代码解析demo中的pdfpython demo/demo.pydemo.py源代码逐行注释import copyimport jsonimport osfrom pathlib import Pathfrom loguru import loggerfrom mineru.cli.common import convert_pdf_bytes_to_bytes_by_pypdfium2, prepare_env, read_fnfrom mineru.data.data_reader_writer import FileBasedDataWriterfrom mineru.utils.draw_bbox import draw_layout_bbox, draw_span_bboxfrom mineru.utils.enum_class import MakeModefrom mineru.backend.vlm.vlm_analyze import doc_analyze as vlm_doc_analyzefrom mineru.backend.pipeline.pipeline_analyze import doc_analyze as pipeline_doc_analyzefrom mineru.backend.pipeline.pipeline_middle_json_mkcontent import union_make as pipeline_union_makefrom mineru.backend.pipeline.model_json_to_middle_json import result_to_middle_json as pipeline_result_to_middle_jsonfrom mineru.backend.vlm.vlm_middle_json_mkcontent import union_make as vlm_union_makefrom mineru.utils.models_download_utils import auto_download_and_get_model_root_path def do_parse( output_dir: str, # 输出目录用于存储解析结果 pdf_file_names: list[str], # PDF文件名列表 pdf_bytes_list: list[bytes], # PDF字节数据列表 p_lang_list: list[str], # 每个PDF对应的语言设置默认ch(中文) backend: str pipeline, # 解析PDF使用的后端默认pipeline parse_method: str auto, # 解析方法默认auto(自动选择) formula_enable: bool True, # 是否启用公式解析 table_enable: bool True, # 是否启用表格解析 server_url: str | None None, # 当使用vlm-sglang-client后端时指定服务器地址 f_draw_layout_bbox: bool True, # 是否绘制布局边界框 f_draw_span_bbox: bool True, # 是否绘制文本跨度边界框 f_dump_md: bool True, # 是否保存Markdown文件 f_dump_middle_json: bool True, # 是否保存中间JSON文件 f_dump_model_output: bool True, # 是否保存模型输出文件 f_dump_orig_pdf: bool True, # 是否保存原始PDF文件 f_dump_content_list: bool True, # 是否保存内容列表文件 f make md mode: MakeMode MakeMode.MM_MD, # Markdown生成模式默认MM_MD start_page_id: int 0, # 开始解析的页面ID默认0(从第一页开始) end_page_id: int | None None # 结束解析的页面ID默认None(解析所有页面)): # PDF解析后端选择 if backend pipeline: # 对每个PDF字节数据执行页面范围提取 for idx, pdf_bytes in enumerate(pdf_bytes_list): # 使用pypdfium2库提取指定页面范围的PDF内容 new_pdf_bytes convert_pdf_bytes_to_bytes_by_pypdfium2( pdf_bytes, start_page_id, end_page_id ) # 更新PDF字节列表替换为提取后的数据 pdf_bytes_list[idx] new_pdf_bytes # 执行PDF文档分析根据parse_method选择解析方式 infer_results, all_image_lists, all_pdf_docs, lang_list, ocr_enabled_list \ pipeline_doc_analyze( pdf_bytes_list, p_lang_list, parse_methodparse_method, formula_enable(formula_enable, table_enabletable_enable ) # 遍历处理每个解析结果 for idx, model_list in enumerate(infer_results): # 创建中间JSON的深度拷贝 model_json copy.deepcopy(model_list) # 获取对应的PDF文件名 pdf_file_name pdf_file_names[idx] # 准备输出环境创建本地图像目录和Markdown目录 local_image_dir, local_md_dir prepare_env( output_dir, pdf_file_name, parse_method ) # 创建文件写入器实例 image作家, md作家 FileBasedDataWriter(local_image_dir), \ FileBasedDataWriter(local_md_dir) # 获取当前PDF的图像列表和PDF文档对象 images_list all_image_lists[idx] pdf_doc all_pdf_docs[idx] # 获取当前PDF的语言设置 _lang lang_list[idx] # 获取OCR是否启用的状态 _ocr_enable ocr_enabled_list[idx] # 将解析结果转换为中间JSON格式 middle_json pipeline_result_to_middle_json( model_list, images_list, pdf_doc, image_writer, _lang, _ocr_enable, formula_enable ) # 获取PDF元信息 pdf_info middle_json[pdf_info] # 根据配置绘制布局边界框 if f_draw_layout_bbox: # 使用绘制函数生成带布局框的PDF draw_layout_bbox( pdf_info, pdf_bytes, local_md_dir, f{pdf_file_name}_layout.pdf ) # 根据配置绘制文本跨度边界框 if f_draw_span_bbox: # 使用绘制函数生成带文本框的PDF draw_span_bbox( pdf_info, pdf_bytes, local_md_dir, f{pdf_file_name}_span.pdf ) # 根据配置保存原始PDF文件 if f_dump_orig_pdf: # 使用文件写入器保存原始PDF md_writer.write( f{pdf_file_name}_origin.pdf, pdf_bytes, ) # 根据配置生成并保存Markdown文件 if f_dump_md: # 获取图像目录的基准名 image_dir str(os.path.basename(local_image_dir)) # 使用联合制作函数生成Markdown内容 md_content_str pipeline_union_make( pdf_info, f make md mode, image_dir ) # 将Markdown内容写入文件 md_writer.write_string( f{pdf_file_name}.md, md_content_str, ) # 根据配置生成并保存内容列表文件 if f_dump_content_list: # 获取图像目录的基准名 image_dir str(os.path.basename(local_image_dir)) # 使用联合制作函数生成内容列表 content_list pipeline_union_make( pdf_info, MakeMode含量列表, image_dir ) # 将内容列表写入JSON文件 md_writer.write_string( f{pdf_file_name}_content_list.json, json.dumps(content_list, ensure_asciiFalse, indent4), ) # 根据配置保存中间JSON文件 if f_dump_middle_json: # 将中间JSON数据写入文件 md作家.write_string( f{pdf_file_name}_middle.json, json.dumps(middle_json, ensure_asciiFalse, indent4), ) # 根据配置保存模型输出文件 if f_dump_model_output: # 将模型列表转换为字符串每个元素用分隔线隔开 model_output (n - * 50 n).join(model_list) # 将模型输出写入文本文件 md作家.write_string( f{pdf_file_name}_model.json, model_output, ) # 记录本地输出目录信息 logger.info(f本地输出目录是 {local_md_dir}) else: # 如果使用其他后端检查是否以vlm-开头 if backend.startswith(vlm-): # 去除vlm-前缀可能用于指定特定的VLMServer backend backend[4:] # 非pipeline后端强制设置为OCR方法 parse_method ocr # 遍历处理每个PDF字节数据 for idx, pdf_bytes in enumerate(pdf_bytes_list): # 获取对应的PDF文件名 pdf_file_name pdf_file_names[idx] # 使用pypdfium2库提取指定页面范围的PDF内容 pdf_bytes convert_pdf_bytes_to_bytes_by_pypdfium2( pdf_bytes, start_page_id, end_page_id ) # 准备输出环境创建本地图像目录和Markdown目录 local_image_dir, local_md_dir prepare_env( output_dir, pdf_file_name, parse_method ) # 创建文件写入器实例 image作家, md作家 FileBasedDataWriter(local_image_dir), \ FileBasedDataWriter(local_md_dir) # 执行VLMServer解析分析返回中间JSON和推理结果 middle_json, infer_result vlm_doc_analyze( pdf_bytes, image_writer(image作家), backend(backend), server_urlserver_url ) # 获取PDF元信息 pdf_info middle_json[pdf_info] # 根据配置绘制布局边界框 if f_draw_layout_bbox: # 使用绘制函数生成带布局框的PDF draw_layout_bbox( pdf_info, pdf_bytes, local_md_dir, f{pdf_file_name}_layout.pdf ) # 根据配置绘制文本跨度边界框 if f_draw_span_bbox: # 使用绘制函数生成带文本框的PDF draw_span_bbox( pdf_info, pdf_bytes, local_md_dir, f{pdf_file_name}_span.pdf ) # 根据配置保存原始PDF文件 if f_dump_orig_pdf: # 使用文件写入器保存原始PDF md作家.write( f{pdf_file_name}_origin.pdf, pdf_bytes, ) # 根据配置生成并保存Markdown文件 if f_dump_md: # 获取图像目录的基准名 image_dir str(os.path.basename(local_image_dir)) # 使用联合制作函数生成Markdown内容 md_content_str vlm_union_make( pdf_info, f make md mode, image_dir ) # 将Markdown内容写入文件 md作家.write_string( f{pdf_file_name}.md, md_content_str, ) # 根据配置生成并保存内容列表文件 if f_dump_content_list: # 获取图像目录的基准名 image_dir str(os.path.basename(local_image_dir)) # 使用联合制作函数生成内容列表 content_list vlm_union_make( pdf_info, MakeMode含量列表, image_dir ) # 将内容列表写入JSON文件 md作家.write_string( f{pdf_file_name}_content_list.json, json.dumps(content_list, ensure_asciiFalse, indent4), ) # 根据配置保存中间JSON文件 if f_dump_middle_json: # 将中间JSON数据写入文件 md作家.write_string( f{pdf_file_name}_middle.json, json.dumps(middle_json, ensure_asciiFalse, indent4), ) # 根据配置保存模型输出文件 if f_dump_model_output: # 将推理结果列表转换为带分隔线的文本 model_output (n - * 50 n).join(infer_result) # 将模型输出写入文本文件 md作家.write_string( f{pdf_file_name}_model_output.txt, model_output, ) # 记录本地输出目录信息 logger.info(f本地输出目录是 {local_md_dir}) def parse_doc( path_list: list[Path], # 待解析的文档路径列表支持PDF和图像文件 output_dir: str, # 输出目录路径用于存储解析结果 lang: str ch, # PDF语言设置默认ch(中文) backend: str pipeline, # PDF解析后端默认pipeline method: str auto, # PDF解析方法默认auto(自动选择) server_url: str | None None, # 当使用vlm-sglang-client后端时指定服务器地址默认None start_page_id: int 0, # 开始解析的页面ID默认0(从第一页开始) end_page_id: int | None None # 结束解析的页面ID默认None(解析所有页面)): #此函数负责读取文档路径列表中的文件提取PDF字节数据并调用do_parse函数进行解析和输出。 try: # 初始化文件名、字节数据和语言列表 file_name_list [] pdf_bytes_list [] lang_list [] # 遍历处理每个文档路径 for path in path_list: # 获取文件名(不含扩展名) file_name str(Path(path).stem) # 读取文件内容为字节数据 pdf_bytes read_fn(path) # 将文件名添加到列表 file_name_list.append(file_name) # 将PDF字节数据添加到列表 pdf_bytes_list.append(pdf_bytes) # 将语言设置添加到列表 lang_list.append(lang) # 调用do_parse函数进行PDF解析和输出 do_parse( output_diroutput_dir, pdf_file_namesfile_name_list, pdf_bytes_listpdf_bytes_list, p_lang_listlang_list, backendbackend, parse_methodmethod, server_urlserver_url, start_page_idstart_page_id, end_page_idend_page_id ) except Exception as e: # 记录异常信息 logger.exception(e) # 向上抛出异常(根据需求决定是否需要) # raise if __name__ __main__: #读取命令行参数准备PDF文件列表并调用parse_doc函数进行解析。 # 获取当前脚本所在目录的绝对路径 __dir__ os.path.dirname(os.path.abspath(__file__)) # PDF文件输入目录路径 pdf_files_dir os.path.join(__dir__, pdfs) # 输出结果目录路径 output_dir os.path.join(__dir__, output) # 支持的PDF文件后缀列表 pdf_suffixes [.pdf] # 支持的图像文件后缀列表 image_suffixes [.png, .jpeg, .jpg] # 初始化文档路径列表 doc_path_list [] # 遍历PDF目录中的所有文件 for doc_path in Path(pdf_files_dir).glob(*): # 检查文件后缀是否在支持的列表中 if doc_path.suffix in pdf_suffixes image_suffixes: # 将符合条件的文件路径添加到列表 doc_path_list.append(doc_path) # 调用parse_doc函数进行文档解析 parse_doc( path_listdoc_path_list, output_dir(output_dir), langch, backendpipeline, methodauto, server_urlNone, start_page_id0, end_page_idNone )普通人如何抓住AI大模型的风口领取方式在文末为什么要学习大模型目前AI大模型的技术岗位与能力培养随着人工智能技术的迅速发展和应用 大模型作为其中的重要组成部分 正逐渐成为推动人工智能发展的重要引擎 。大模型以其强大的数据处理和模式识别能力 广泛应用于自然语言处理 、计算机视觉 、 智能推荐等领域 为各行各业带来了革命性的改变和机遇 。目前开源人工智能大模型已应用于医疗、政务、法律、汽车、娱乐、金融、互联网、教育、制造业、企业服务等多个场景其中应用于金融、企业服务、制造业和法律领域的大模型在本次调研中占比超过30%。随着AI大模型技术的迅速发展相关岗位的需求也日益增加。大模型产业链催生了一批高薪新职业人工智能大潮已来不加入就可能被淘汰。如果你是技术人尤其是互联网从业者现在就开始学习AI大模型技术真的是给你的人生一个重要建议最后只要你真心想学习AI大模型技术这份精心整理的学习资料我愿意无偿分享给你但是想学技术去乱搞的人别来找我在当前这个人工智能高速发展的时代AI大模型正在深刻改变各行各业。我国对高水平AI人才的需求也日益增长真正懂技术、能落地的人才依旧紧缺。我也希望通过这份资料能够帮助更多有志于AI领域的朋友入门并深入学习。真诚无偿分享vx扫描下方二维码即可加上后会一个个给大家发大模型全套学习资料展示自我们与MoPaaS魔泊云合作以来我们不断打磨课程体系与技术内容在细节上精益求精同时在技术层面也新增了许多前沿且实用的内容力求为大家带来更系统、更实战、更落地的大模型学习体验。希望这份系统、实用的大模型学习路径能够帮助你从零入门进阶到实战真正掌握AI时代的核心技能01教学内容从零到精通完整闭环【基础理论 →RAG开发 → Agent设计 → 模型微调与私有化部署调→热门技术】5大模块内容比传统教材更贴近企业实战大量真实项目案例带你亲自上手搞数据清洗、模型调优这些硬核操作把课本知识变成真本事02适学人群应届毕业生无工作经验但想要系统学习AI大模型技术期待通过实战项目掌握核心技术。零基础转型非技术背景但关注AI应用场景计划通过低代码工具实现“AI行业”跨界。业务赋能突破瓶颈传统开发者Java/前端等学习Transformer架构与LangChain框架向AI全栈工程师转型。vx扫描下方二维码即可本教程比较珍贵仅限大家自行学习不要传播更严禁商用03入门到进阶学习路线图大模型学习路线图整体分为5个大的阶段04视频和书籍PDF合集从0到掌握主流大模型技术视频教程涵盖模型训练、微调、RAG、LangChain、Agent开发等实战方向新手必备的大模型学习PDF书单来了全是硬核知识帮你少走弯路不吹牛真有用05行业报告白皮书合集收集70报告与白皮书了解行业最新动态0690份面试题/经验AI大模型岗位面试经验总结谁学技术不是为了赚$呢找个好的岗位很重要07 deepseek部署包技巧大全由于篇幅有限只展示部分资料并且还在持续更新中…真诚无偿分享vx扫描下方二维码即可加上后会一个个给大家发