12 款开源OCR发 PDF 识别框架

2024 年 12 款开源文档解析框架的选型对比评测:PDF解析、OCR识别功能解读、应用场景分析及优缺点比较

这是该系列的第二篇文章,聚焦于智能文档处理(特别是 PDF 解析)。无论是在模型预训练的数据收集阶段,还是基于 RAG 的知识库构建阶段,大量高质量数据通常以 PDF 或扫描图像的形式出现。由于这些文件的排版多样、格式不一以及扫描质量参差不齐,利用这些数据极具挑战。主要难点在于:一是有效提取内容信息和版面信息(如正文、标题、图注、图片、表格、公式等);二是处理版面元素之间的关系。鉴于此领域的巨大需求,市场上既有开源框架,也不乏商业解决方案,涵盖了从传统 OCR 识别到新型多模态大模型,甚至两者的结合,本篇文章就对他们进行盘点并做功能解读,优缺点比较,应用场景推荐。

如果觉得内容不错,欢迎关注,分享和在看~

文档智能一直是学术研究的重要课题和工业界的痛点需求,它涉及对网页、数字文档及扫描文档中的文本和排版信息的理解、分类、提取及信息归纳。文档布局和格式的多样性、低质量的扫描图像以及模板结构的复杂性,给文档智能带来了许多挑战,自动、精确、快速的信息处理对于提升生产力至关重要,自大模型技术爆发以来,文档和图像等载体的结构化分析与内容提取成为了企业进行 LLM 落地的关键因素之一,在金融领域,文档智能可用于财报分析和智能决策支持;在医疗领域,它可以实现病例的数字化,提高诊断精度,并通过分析医学文献和病例的关联性,提出潜在的治疗方案;在财务领域,它可以实现发票和采购单的自动化信息提取,大幅降低人工处理的时间成本。关于文档智能详细的演进历史,可以阅读微软亚洲研究院这篇综述《文档智能:数据集、模型和应用》
在这里插入图片描述

常规工作流

无论是厂商提供的智能文档识别与处理服务,还是日常遇到的 PDF 内容提取和影像扫描件识别,其背后的技术核心都是文档智能,这里快速梳理下文档智能处理流程中的关键环节及关键技术,以便更好地理解随后对 12 款开源 PDF 工具和 5 家智能文档处理服务的对比分析,这些方案大致可分为两类:一是较为成熟、适用范围广的常规工作流方案;二是尚处于探索阶段、应用场景有限的基于多模态模型的端到端解决方案。

首先看常规的处理流程,通常涉及以下几个步骤:

文档预处理:预处理措施可能包括去噪、校正倾斜、二值化和增强对比度等,这一步是为了提升(图像)文档的质量,以确保后续分析和识别的准确性。

物理版面分析:使用基于回归的单阶段检测模型(如 Faster R-CNN、YOLO 等)检测文档中的物理布局元素(如栏、章节等),通过分析图像中的空白区域、边界和文本密度等特征,识别出标题、段落、图片和表格等不同区域。

文本区域分析:进一步分析检测到的文本区域,识别单词、行和段落,这可能涉及文本行提取和字符分割等子任务。

内容识别:应用 OCR 和表格解析等技术,提取表格、公式、文字等内容。

逻辑版面:通过语义分析理解文档的结构和层次关系,将文本块组织成段落、列表等语义单元。

在这里插入图片描述

数据输出:将分析结果以 HTML、JSON 等格式输出,便于后续处理和应用。

内容识别
内容识别是版面分析流程的后续步骤,版面分析关注的是文档的整体布局和结构,而关注的是文档中具体内容的识别,主要包括三种场景,即表格解析、公式识别和文字提取。

表格解析

表格结构识别是在完成表格区域检测后进行的任务,旨在解析表格的布局和层次结构,将视觉信息转化为可用于重建表格的结构描述。这些描述信息涵盖单元格的确切位置、单元格间的关系及单元格的行、列定位。目前,表格结构信息主要采用两种描述方式:1)单元格列表(包括每个单元格的位置、行列表信息及内容);2)HTML 或 LaTeX 代码(除了单元格的位置,有时还包括内容)。实际应用中,表格类型多样,结构各异。根据表头的位置,表格大致可分为四类:

垂直表格:首行为表头,其余行为垂直排列的数据,是最基础的表格形式。

水平表格:首列为行表头,其余列为水平排列的数据,常见于维基百科中的人物信息记录。

层级表格:表头具有层级结构,表格中包含合并单元格,常见于统计报告和学术论文,此类表格可能同时具有行表头和列表头的层级结构。

复杂表格:表头不仅限于表格的左侧或顶部,还可以出现在任意位置,甚至与常规数据混杂,如专业设备手册、政府登记表和公司面试申请表中常见的形式。

在这里插入图片描述

公式识别

公式识别用于将图像中的数学公式转换为 LaTeX、MathML 等格式,确保其在文档中正确显示和编辑,但在自动阅卷、数字图书馆建设和办公自动化等场景中,手写数学公式的识别仍面临挑战,主要因为这些公式具有复杂的二维结构、多样的书写风格和手写符号的歧义性,具体来说,手写数学公式的识别难度体现在以下几个方面:

复杂的二维结构,如分式、上下标和根号等;

多样化的书写风格,不同人书写同一符号可能存在差异;

手写符号的歧义性,某些符号在手写时容易混淆。

文字提取

这里需要重点说下 OCR 识别,OCR(Optical Character Recognition、光学字符识别)用于将图像中的文字内容识别并转换为可编辑的文本格式,文字识别是 OCR 技术的核心应用场景之一。广州软件应用技术研究院发布了一份关于 12 款开源 OCR 工具(包括PaddleOCR、RapidOCR、读光、ChineseOCR、EasyOCR、Tesseract、OcrLiteOnnx、Surya、docTR、JavaOCR以及文档分析组件RagFlow和Unstructured)的文字识别性能评估报告。评估覆盖了五个关键场景:印刷中文、印刷英文、手写中文、复杂自然场景和变形字体。该评估的数据集在数量和多样性方面(见下图)很有说服力,而且时间很新(2024 年 6 月),具有较高的参考价值。可以在公众号「莫尔索随笔」后台获取回复「文档解析」获取完整的评估报告,对你进行技术选型和设计符合自己场景的测试数据集很有帮助。
在这里插入图片描述

在这里插入图片描述

多模态模型端到端

基于多模态大模型(如面壁智能的 MiniCPM-V 2.6)的端到端解决方案较为直接,通过设计特定的提示词,能够直接从图片文档中提取和分析信息,输出结构化的数据。尽管开源社区已有许多相关项目,但是远远还不成熟,后面我会详细介绍。针对多模态模型,已有一个名为 OCR 任务测评基准(OCRBench
在这里插入图片描述

[2]
)的评估工具,该工具涵盖了文本识别、场景文本为中心的视觉问答(VQA)、文档导向的 VQA、关键信息提取(KIE)以及手写数学公式识别(HMER)等测试维度。多模态模型在传统的文本任务上表现出色,但在处理缺乏语义上下文的文本、手写文本、多语言文本及高分辨率输入图像方面存在不足。

开源框架

了解完核心能力,接下来就可以对开源的 12 款文档解析框架了进行比较了,首先我会快速介绍下每款工具,最后用一个表格直观展示每个框架具备的能力,不想看介绍的可以直接翻到总结部分查看。

常规流程

1. MinerU

[3]
MinerU 放在第一个,因为这个项目完成度特别高。作为由上海人工智能实验室大模型数据基座团队(OpenDataLab)开发的开源数据提取工具,MinerU 专精于从复杂的 PDF 文档、网页和电子书中高效提取内容。它能去除文档中的页眉、页脚、脚注和页码等非文本元素,确保提取内容的语义连贯性。该工具支持单栏、多栏及复杂排版的文本提取,并能保留原文档的结构,如标题、段落和列表等。此外,MinerU 还能提取图像、图片描述、表格、表格标题和脚注。对于文档中的数学公式,MinerU 可以自动识别并转换为 LaTeX 格式,同时将表格转换为 HTML 格式。对于扫描版 PDF 和乱码 PDF,MinerU 配备了 OCR 功能,支持 84 种语言的检测与识别,输出格式多样,包括 Markdown 和 JSON。

然而,MinerU 不支持垂直文字的处理。目录和列表依赖规则识别,少数不常见的列表类型可能无法被正确识别。仅支持一级标题,不支持多级标题。漫画书、艺术图册、小学教材和习题集目前无法准确解析。在处理复杂表格时可能出现行列错误。小语种 PDF 的 OCR 识别可能无法准确识别特殊字符,例如拉丁文重音符号或阿拉伯文中的易混淆字符。某些数学公式可能无法在 Markdown 中正确显示。

尽管存在上述限制,但我依旧很推荐这个项目,其 PDF 解析功能已被拆分为独立项目 PDF-Extract-Kit

[4]
,通过它可以深入了解文档处理流程的具体实现,包括表格解析方法和版面分析模型的设计。此外,OpenDataLab 团队还分享了一份关于 MinerU 的 PPT,链接在此
[5]
,其中包含了许多有价值的见解,特别是关于网页内容采集和 PDF 解析的系统性思考。

2. PaddleOCR

[6]
PaddleOCR 放在第二个,生态繁荣,影响力巨大,延伸的项目特别多,OCR 话题基本绕不过它,上面的 PDF-Extract-Kit 就在用。PaddleOCR 是一个基于 PaddlePaddle(飞桨) 深度学习框架开发的开源多语言 OCR 工具包,为开发者提供丰富实用的 OCR 解决方案,帮助训练更优质的模型并应用于实际场景。PaddleOCR 提供了一系列功能模型,涵盖文本图像智能分析、通用 OCR、版面解析、表格识别及印章文字识别等。此外,还支持以下高级功能:

文档场景信息抽取

[7]
%28PP-ChatOCRv3-doc%29:用于从文档中提取关键信息。
高精度版面区域检测模型

[8]
(基于 RT-DETR):适用于需要高精度检测的应用。
高效率版面区域检测模型

[9]
(基于 PicoDet):适用于对处理速度有较高要求的场景。
高精度表格结构识别模型

[10]
SLANet_Plus:能够准确识别表格的结构。
文本图像矫正模型

[11]
UVDoc:用于校正扭曲的文本图像。
公式识别模型

[12]
LatexOCR:能够识别并转换数学公式。
文档图像方向分类模型

[13]
(基于 PP-LCNet):用于确定文档图像的方向。

3. Marker

[14]
Marker 用于将 PDF 文件快速且准确地转换成 Markdown、JSON 和 HTML 格式,也有对应的商业化服务 Datalab

[15]
,包含特性如下:
页面布局检测:利用 Surya 模型检测页面布局,确定文本的阅读顺序。

内容清洗与格式化:采用 heuristics、texify 和 tabled 模型对文本进行清洗和格式化,确保表格、代码块等元素的结构清晰。

文本提取:除了使用常规 PDF 解析方式,还使用 OCR 技术(如 heuristics 和 Surya 模型)识别图像中的文本。

公式图片处理:提取 PDF 中的图片,并将公式转换为 LaTeX 格式。

Marker 的核心是开源的Surya

[16]
,它是一个支持 90 多种语言的文档 OCR 工具包,提供文本检测、布局分析、阅读顺序和表格识别等功能,具体的能力详情前面的开源 OCR 工具评测报告有详细介绍,可自行阅读。

4. Unstructured

[17]
Unstructured 是一个开源库和 API 套件,旨在构建自定义数据预处理管道。它主要用于机器学习任务中的数据提取、转换和加载(ETL)过程,支持 PDF、图像等多种文档格式,帮助开发者从非结构化数据中提取结构化信息,以用于标注、训练或生产环境中的机器学习模型。该项目的创始人在此基础上构建企业级数据预处理工具,提供商业服务,已融资 2500 万美元。

多模态模型

5. gptpdf

[18]
想法很不错,这是我看到的第一个使用多模态模型做 PDF 处理的,虽然已经不维护了,但我还是放在这里,几百行代码,使用 GPT-4o 解析 PDF 文件。首先利用 PyMuPDF 库分析 PDF 文件,识别并标记出所有非文本区域,例如图表和图片,接着使用 GPT-4o 来处理这些标记过的非文本区域,向模型提供适当的提示词,指导其将这些区域内容转换为 Markdown 格式。

DEFAULT_PROMPT = “”“使用 markdown 语法,将图片中识别到的文字转换为 markdown 格式输出。你必须做到: 1. 输出和使用识别到的图片的相同的语言,例如,识别到英语的字段,输出的内容必须是英语。2. 不要解释和输出无关的文字,直接输出图片中的内容。例如,严禁输出 “以下是我根据图片内容生成的 markdown 文本:”这样的例子,而是应该直接输出 markdown。3. 内容不要包含在markdown中、段落公式使用 的形式、行内公式使用 $ $ 的形式、忽略掉长直线、忽略掉页码。 再次强调,不要解释和输出无关的文字,直接输出图片中的内容。 “”” DEFAULT_RECT_PROMPT = “”“图片中用红色框和名称%28%s%29标注出了一些区域。 如果区域是表格或者图片,使用 %21[]%28%29 的形式插入到输出内容中,否则直接输出文字内容。 “”” DEFAULT_ROLE_PROMPT = “”“你是一个 PDF 文档解析器,使用 markdown 和 latex 语法输出图片的内容。 “””

6. Zerox

[19]
Zerox 首先将 PDF、 Docx 等格式转换为一系列图像,这一步使用graphicsmagick和ghostscript等工具来处理 PDF 文件。对于 Docx 格式使用libreoffice等工具将其先转换为 PDF,然后再进行图像转换。将转换得到的图像传递给多模态模型,下面的步骤就和在 gptpdf 的思路上一致了,将模型返回的每个页面的 Markdown 文本聚合起来,形成完整的 Markdown 文档。顺便一提,项目创始人也基于此推出了OmniAI

[20]
产品,用于将多种类型的文档转换为结构化数据,融资 320 万美元。
结合方案

7. Chunkr

[21]
Chunkr 可以将 PDF、PPT、Docx 和 Excel 等格式的文件转换成结构化数据,它通过使用 11 种语义标签(结合多模态模型)进行文档的布局分析,支持 OCR 技术提取文本内容,并能够生成包含边框信息的结构化输出,如 HTML 和 Markdown 格式,开源这个项目的公司叫 Lumina

[22]
,也是做 AI 搜索引擎的,拿了 YC 投资。

8. pdf-extract-api

[23]
pdf-extract-api 用于将图片和 PDF 文档转换为 Markdown 或 JSON 格式,支持多种 OCR 策略,包括 surya、llama_vision(多模态模型) 和 tesseract,此外,它还集成了 LLM(如 LLama 3.1)来改善 OCR 文本的质量。

9. Sparrow

[24]
Sparrow 项目用于从各种文档和图像中高效提取和处理数据,包括表格、银行对账单、发票、收据等非结构化数据源,具有模块化架构,包括多个组件,其中 Sparrow Parse 支持使用多模态模型进行数据提取,Sparrow OCR 使用 OCR 技术进行字符识别,Sparrow 只擅长处理常见的形式化文档。

其他
题目提到 12 个开源的项目,怎么只罗列了 9 种呢,别急,其余 3 种已在系列第一篇关于 RAG 框架的介绍

RAGFlow 开源的DeepDoc

[26]

以及 Quivr 开源的MegaParse

[27]
,这些组件不仅提供了文档解析功能,还处理了内容分块的步骤,是构建高效 RAG 框架不可或缺的一部分,这里不再赘述。
总结
划重点的部分来了!
在这里插入图片描述

PDF、DOCX、Excel 和 PPT 四种文档格式均有对应的解析器,其中 PDF 的解析最为复杂,因此常被用作评估文档解析能力的基准。尽管有许多优秀的开源项目,但在处理复杂表格和公式识别时,它们大多表现不佳。例如,当公式嵌入到上下文页面中时,具备布局分析能力的框架往往会出现大量识别错误。此外,这些项目还存在各自的局限性:gptpdf、PaddleOCR 缺乏必要的后处理步骤;Marker 支持的语言种类有限,Figure 处理不够完善;MinerU 消耗较多的计算资源等。大多数项目转换后的格式支持 Markdown 和 HTML,以便于 LLM 理解和处理。不过不支持 HTML 输出的项目可以确定是无法解析较为复杂的表格,因为标准 Markdown 语法仅适用于简单的表格结构,而复杂的表格则需借助 HTML 表格或其他文档格式(如 LaTeX、AsciiDoc、ReStructuredText)来实现。

文件解析是一个不断优化的过程,针对不同格式和复杂性的文件,需要持续探索和调整解决方案,在处理 PDF 文件时,数字签名、扫描件、影印件及复杂表格的解析均属特殊情形,需采取专门的方法,这个领域仍有许多机会,欢迎有兴趣合作的朋友后台联系我交流咨询。

智能文档处理服务
鉴于开源项目在处理复杂表格和公式方面过于拉垮,我进一步测试了 5 家收费的智能文档处理服务,发现其性能确实更出色些,果然是贵有贵的道理。比如下面这个复杂合并单元格(关于更多带复杂表格和公式的文档测试数据,可以在公众号「莫尔索随笔」后台获取回复「文档解析」获取,相信对你进行厂商选择和设计符合自己场景的测试数据集很有帮助)

TextIn

[28]
TextIn 是合合信息推出的通用文档解析服务,它能够识别文档或图片中的文字信息,并将文档内容解析为 HTML 格式,保持常见的阅读顺序。该服务在表格识别方面具有高精度,能够处理有线表、无线表、密集表格,以及单元格合并和跨页表格合并。解析速度极快,100 页长文档最快仅需 1.5 秒,同时支持在线和离线批量处理。TextIn ParseX 支持多种文档格式,包括 PDF、Word、HTML 等,并且能够一次性获取文字、表格、标题层级、公式、手写字符、图片信息。TextIn 解析正确,但表格内内容区分度不明显。
在这里插入图片描述

PDFlux

[29]在这里插入图片描述

PDFlux 是专为 PDF 文档设计的数据提取工具,实现对 PDF 或图片中的表格和文字内容的智能识别和提取。在内容识别方面,PDFlux 能够智能识别 PDF 或图片中的表格和文字内容,支持无线表格识别、复杂排版精确提取、自动扶正歪斜表格、去除印章干扰、智能合并跨页表格以及一键去除空格换行等功能。在格式转换方面,PDFlux 支持将 PDF 转换为 Word、Excel、HTML 等多种格式,方便用户编辑和移动端阅读,同时保留文档的章节目录结构。PDFlux 的识别结果丢失了表格标题。

Mathpix

[30]
通过 OCR 技术识别公式,可以快速准确地将数学公式截图和手写公式转换为 LaTeX 格式,无论是行间公式还是行内公式都可以准确识别,支持多国语言;可以识别图片或 pdf 文件中的表格,并输出 TSV(制表符分隔值)格式,可以直接将 pdf 转换为 LaTeX、Word、HTML 等格式,沉浸式翻译、Anthropic、谷歌 Bard 等都调用了它的服务。Mathpix 识别正确,但没有合并单元格。

在这里插入图片描述

Doc2x

[31]
上传 PDF 或图片,精准公式识别和表格识别,一键高效转换为 Word、LaTeX、HTML、Markdown 等多种格式,Doc2x 识别正确 ,内容使用空格区分。
在这里插入图片描述

百度智能云办公文档识别服务
[32]
大厂产品就首先试了下百度的,内容对,但丢失表格结构,直接放弃,其他家的就没再继续试了。
在这里插入图片描述

写在最后
以后再看到新的和文档解析相关开源项目时,可以通过以下技巧快速判断其是否具有实质性创新:首先检查项目是否沿用了传统的 OCR 流程;其次,观察表格识别和版面分析模型是自主研发的还是基于 PaddleOCR 等开源工具,如果这些方面有所创新,那么该项目值得深入研究。若计划在实际产品中应用相关技术,本着对用户负责的态度,优先考虑商业化的智能文档处理服务(商业化的智能文档处理服务,主要关注三个维度,快、准、稳,(表格、公式)识别精准、解析速度快、稳定性好),对于包含大量表格和公式的文档,我推荐如下选择:英文上下文中的公式识别首选 Mathpix;中文上下文中的公式识别则应选择 Doc2X;而面对复杂的表格,则 PDFlux 或 TextIn 更为可靠。如果你要自建一套文档解析解决方案,基于 MinerU 去搭建,针对无法处理的特定场景利用 PaddleOCR 工具包训练相应的模型。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/8360.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

银行卡三要素验证接口:方便快捷地实现银行卡核验功能

银行卡三要素验证API:防止欺诈交易的有力武器 随着互联网的发展,电子支付方式也越来越普及。在支付过程中,银行卡是最常用的支付工具之一。然而,在一些支付场景中,需要对用户的银行卡信息进行验证,以确保支…

Lite.Ai.ToolKit - 一个轻量级的 C++ 工具包

🛠**Lite.Ai.ToolKit**:一个轻量级的 C 工具包,包含 100 个很棒的 AI 模型,例如对象检测、人脸检测、人脸识别、分割、遮罩等。请参阅 Model Zoo 和 ONNX Hub、MNN Hub、TNN Hub、NCNN Hub。 3700 Stars 711 Forks 0 Issues 6 贡献…

node.js 07.npm下包慢的问题与nrm的使用

一.npm下包慢 因为npm i 默认从npm官网服务器进行下包,但是npm官网服务器是海外服务器所以响应很慢. 于是我们通过npm下包的时候通常用淘宝镜像进行下包,下面是切换到淘宝镜像地址下包的操作. 二.nrm的使用 nrm是一个管理切换npm下包地址的工具,可以快速切换下包的地址. 安…

读书笔记--分布式服务架构对比及优势

本篇是在上一篇的基础上,主要对共享服务平台建设所依赖的分布式服务架构进行学习,主要记录和思考如下,供大家学习参考。随着企业各业务数字化转型工作的推进,之前在传统的单一系统(或单体应用)模式中&#…

基于ADS的电感和变压器的建模过程

1. 电感二端口建模 对于固定尺寸单圈电感,从0.5G-200GHz的仿真,并提取其模型 如果想要在50GHz前把模型建准,仿真可能要建到200G,因为需要高频的数据,频率越高信息也越多。首先要调用文件由于数据是存在一个文件夹里面的…

使用Maxscript定义纹理贴图的方法

在3ds Max中,MaxScript 是一种用于插件编写和自动化任务的强大工具。通过MaxScript,你可以创建和操作对象、材质、灯光等等。要为材质分配纹理贴图,你可以按照以下方法来编写脚本。直接代码: myBmp = bitmaptexture filename:"D:\map001.tga" meditmaterials[1]…

初阶数据结构:链表(二)

目录 一、前言 二、带头双向循环链表 1.带头双向循环链表的结构 (1)什么是带头? (2)什么是双向呢? (3)那什么是循环呢? 2.带头双向循环链表的实现 (1)节点结构 (2…

项目开发实践——基于SpringBoot+Vue3实现的在线考试系统(九)(完结篇)

文章目录 一、成绩查询模块实现1、学生成绩查询功能实现1.1 页面设计1.2 前端页面实现1.3 后端功能实现2、成绩分段查询功能实现2.1 页面设计2.2 前端页面实现2.3 后端功能实现二、试卷练习模块实现三、我的分数模块实现1、 页面设计2、 前端页面实现3、 后端功能实现四、交流区…

环境搭建--vscode

vscode官网下载合适版本 安装vscode插件 安装 MinGW 配置环境变量 把安装目录D:\mingw64 配置在用户的环境变量path里即可 选择用户环境变量path 点确定保存后开启cmd输入g,如提示no input files 则说明Mingw64 安装成功,如果提示g 不是内…

爱的魔力转圈圈,基于carsim与simulink模拟仰望u8原地调头

仰望U8原地转向的示意图如下,不动方向盘的情况下,车可以自己转圈圈: 原理也很简单,仰望u8是四轮驱动,四个轮子都单独由四个轮边电机驱动。主要我们将左右的车轮轮速控制成左右两边轮速相同,但是方向相反&am…

1.1第1章DC/DC变换器的动态建模-1.1状态平均的概念--电力电子系统建模及控制 (徐德鸿)--读书笔记

电力电子系统一般由电力电子变换器(滤波电路和开关)、PWM 调制器、驱动电路、反馈控制单元构成,如图1-1所示。由控制理论的知识,电力电子系统的静态和动态性能的好坏与反馈控制设计密切相关。要进行反馈控制设计,首先要…

6. 使用springboot做一个音乐播放器软件项目【1.0版项目完结】附带源码~

#万物OOP 注意: 本项目只实现播放音乐和后台管理系统。 不分享任何音乐歌曲资源。 上一篇文章我们 做了音乐播放器后台的功能。参考地址: https://jsonll.blog.csdn.net/article/details/145214363 这个项目已经好几天也没更新了,因为临近放…

WGCLOUD使用介绍 - 如何监控ActiveMQ和RabbitMQ

根据WGCLOUD官网的信息,目前没有针对ActiveMQ和RabbitMQ这两个组件专门做适配 不过可以使用WGCLOUD已经具备的通用监测模块:进程监测、端口监测或者日志监测、接口监测 来对这两个组件进行监控

豆包MarsCode:字符串字符类型排序问题

问题描述 思路分析 我们需要对字符串中的字母、数字、问号按照规则进行排序,具体要求是: 问号的位置不变。数字的位置不变,但数字之间要按照从大到小排序。字母的位置不变,但字母之间要按照字典序排序。 解决此问题的思路分为以…

[STM32 标准库]定时器输出PWM配置流程 PWM模式解析

前言: 本文内容基本来自江协,整理起来方便日后开发使用。MCU:STM32F103C8T6。 一、配置流程 1、开启GPIO,TIM的时钟 /*开启时钟*/RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2, ENABLE); //开启TIM2的时钟RCC_APB2PeriphClockC…

无人机红外热成像:应急消防的“透视眼”

无人机红外热成像:应急消防的“透视眼” 亲爱的小伙伴们,每年一到夏天,应急消防的战士们就像上紧了发条的闹钟,时刻准备应对各种灾害。炎热天气让火灾隐患“蹭蹭”往上涨,南北各地还有防洪救灾、台风、泥石流等灾害轮…

【Redis】常见面试题

什么是Redis? Redis 和 Memcached 有什么区别? 为什么用 Redis 作为 MySQL 的缓存? 主要是因为Redis具备高性能和高并发两种特性。 高性能:MySQL中数据是从磁盘读取的,而Redis是直接操作内存,速度相当快…

LLM - 大模型 ScallingLaws 的指导模型设计与实验环境(PLM) 教程(4)

欢迎关注我的CSDN:https://spike.blog.csdn.net/ 本文地址:https://spike.blog.csdn.net/article/details/145323420 免责声明:本文来源于个人知识与公开资料,仅用于学术交流,欢迎讨论,不支持转载。 Scalin…

书生大模型实战营2

L0——入门岛 Python基础 Conda虚拟环境 虚拟环境是Python开发中不可或缺的一部分,它允许你在不同的项目中使用不同版本的库,避免依赖冲突。Conda是一个强大的包管理器和环境管理器。 创建新环境 首先,确保你已经安装了Anaconda或Minico…

力扣111二叉树的最小深度(DFS)

Problem: 111. 二叉树的最小深度 文章目录 题目描述思路复杂度Code 题目描述 思路 1.欲望求出最短的路径,先可以记录一个变量minDepth,同时记录每次当前节点所在的层数currentDepth 2.在递的过程中,每次递一层,也即使当前又往下走…