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.pswp.cn/web/67254.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/67254.shtml
英文地址,請注明出處:http://en.pswp.cn/web/67254.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

DeepSeek R1:推理模型新紀元與價格戰

標題:DeepSeek R1:推理模型新紀元與價格戰 文章信息摘要: DeepSeek R1的發布標志著推理模型研究的重要轉折點,其采用四階段強化學習訓練方法,結合監督微調和拒絕采樣,顯著提升了模型的推理能力。這一進展不…

深度剖析C++17中的std::optional:處理可能缺失值的利器

文章目錄 一、基本概念與設計理念二、構建與初始化(一)默認構造(二)值初始化(三)使用std::make_optional(四)使用std::nullopt 三、訪問值(一)value()&#x…

擬合損失函數

文章目錄 擬合損失函數一、線性擬合1.1 介紹1.2 代碼可視化1.2.1 生成示例數據1.2.2 損失函數1.2.3 繪制三維圖像1.2.4 繪制等高線1.2.5 損失函數關于斜率的函數 二、 多變量擬合2.1 介紹2.2 代碼可視化2.2.1 生成示例數據2.2.2 損失函數2.2.3 繪制等高線 三、 多項式擬合3.1 介…

基于微信小程序的移動學習平臺的設計與實現(LW+源碼+講解)

專注于大學生項目實戰開發,講解,畢業答疑輔導,歡迎高校老師/同行前輩交流合作?。 技術范圍:SpringBoot、Vue、SSM、HLMT、小程序、Jsp、PHP、Nodejs、Python、爬蟲、數據可視化、安卓app、大數據、物聯網、機器學習等設計與開發。 主要內容:…

【公因數匹配——暴力、(質)因數分解、哈希】

題目 暴力代碼&#xff0c;Acwing 8/10&#xff0c;官網AC #include <bits/stdc.h> using namespace std; const int N 1e610; vector<int> nums[N]; int main() {ios::sync_with_stdio(0);cin.tie(0);int n;cin >> n;for(int i 1; i < n; i){int x;ci…

127周一復盤 (165)玩法與難度思考

1.上午測試&#xff0c;小改了點東西&#xff0c; 基本等于啥也沒干。 匆忙趕往車站。 從此進入春節期間&#xff0c;沒有開發&#xff0c;而思考與設計。 2.火車上思考玩法與難度的問題。 目前的主流作法實際上并不完全符合不同玩家的需求&#xff0c; 對這方面還是要有自…

【數據結構】_鏈表經典算法OJ(力扣版)

目錄 1. 移除鏈表元素 1.1 題目描述及鏈接 1.2 解題思路 1.3 程序 2. 反轉鏈表 2.1 題目描述及鏈接 2.2 解題思路 2.3 程序 3. 鏈表的中間結點 3.1 題目描述及鏈接 3.2 解題思路 3.3 程序 1. 移除鏈表元素 1.1 題目描述及鏈接 原題鏈接&#xff1a;203. 移除鏈表…

編譯器gcc/g++ --【Linux基礎開發工具】

文章目錄 一、背景知識二、gcc編譯選項1、預處理(進行宏替換)2、編譯&#xff08;生成匯編&#xff09;3、匯編&#xff08;生成機器可識別代碼&#xff09;4、鏈接&#xff08;生成可執行文件或庫文件&#xff09; 三、動態鏈接和靜態鏈接四、靜態庫和動態庫1、動靜態庫2、編譯…

Java 注解與元數據

Java學習資料 Java學習資料 Java學習資料 一、引言 在 Java 編程中&#xff0c;注解&#xff08;Annotation&#xff09;和元數據&#xff08;Metadata&#xff09;是兩個重要的概念。注解為程序提供了一種在代碼中嵌入額外信息的方式&#xff0c;這些額外信息就是元數據。元…

操作系統指定用戶密碼永不過期

背景 實際生產環境中&#xff0c;數據中心操作系統通常會有基線要求&#xff08;比如等保之類&#xff09;&#xff0c;要求設置操作系統密碼有效期&#xff0c;但是infra團隊或者操作系統管理員或者某些業務配置使用的操作系統用戶又需要密碼不能不停修改&#xff08;或者說一…

無用的知識又增加了:is_assignable means?

std::pair的默認operator被delete掉了&#xff0c;取而代之的是兩個enable_if版本。 為什么這么設計&#xff0c;我的理解是在std::map里&#xff0c;已經保存的元素的key值是不能被修改的&#xff0c;比如 注意&#xff0c;下面的代碼會修改key值&#xff0c;編譯時出現錯誤…

能量提升法三:贊美

前情回顧&#xff1a; 《能量提升法二&#xff1a;感恩》 片段&#xff1a;“感恩&#xff0c;就像是在跟世界說&#xff1a;謝謝你&#xff0c;我收到了&#xff0c;我很喜歡&#xff0c;請多來點” 把它歸還人海&#xff0c;就當作每一個人&#xff0c;都有可能是曾經幫助…

25美賽ABCDEF題詳細建模過程+可視化圖表+參考論文+寫作模版+數據預處理

詳情見該鏈接&#xff01;&#xff01;&#xff01;&#xff01;&#xff01;&#xff01; 25美國大學生數學建模如何準備&#xff01;&#xff01;&#xff01;&#xff01;&#xff01;-CSDN博客文章瀏覽閱讀791次&#xff0c;點贊13次&#xff0c;收藏7次。通過了解比賽基本…

2025企業繁體鏡像站鏡像站群版 | 干擾碼+拼音插入

技術背景 高效的SEO優化和內容采集是企業站群系統的核心競爭力。本文將詳細介紹一套企業級網站鏡像工具包&#xff0c;重點展示其在SEO優化、內容采集、智能處理等方面的創新實現。 系統特性 1. SEO優化功能 關鍵詞智能布局標題標簽優化鏈接結構優化移動端適配頁面加速優化…

動態規劃<九>兩個數組的dp

目錄 引例 LeetCode經典OJ題 1.第一題 2.第二題 3.第三題 4.第四題 5.第五題 6.第六題 7.第七題 引例 OJ傳送門LeetCode<1143>最長公共子序列 畫圖分析&#xff1a; 使用動態規劃解決 1.狀態表示 ------經驗題目要求 經驗為選取第一個字符串的[0,i]區間以及第二個字…

大數據學習之SCALA分布式語言三

7.集合類 111.可變set一 112.可變set二 113.不可變MAP集合一 114.不可變MAP集合二 115.不可變MAP集合三 116.可變map一 package com . itbaizhan . chapter07 //TODO 2. 使用 mutable.Map 前導入如下包 import scala . collection . mutable // 可變 Map 集合 object Ma…

MongoDB中常用的幾種高可用技術方案及優缺點

MongoDB 的高可用性方案主要依賴于其內置的 副本集 (Replica Set) 和 Sharding 機制。下面是一些常見的高可用性技術方案&#xff1a; 1. 副本集 (Replica Set) 副本集是 MongoDB 提供的主要高可用性解決方案&#xff0c;確保數據在多個節點之間的冗余存儲和自動故障恢復。副…

基于OSAL的嵌入式裸機事件驅動框架——整體架構調度機制

參考B站up主【架構分析】嵌入式祼機事件驅動框架 感謝大佬分享 任務ID &#xff1a; TASK_XXX TASK_XXX 在系統中每個任務的ID是唯一的&#xff0c;范圍是 0 to 0xFFFE&#xff0c;0xFFFF保留為SYS_TSK_INIT。 同時任務ID的大小也充當任務調度的優先級&#xff0c;ID越大&#…

WGCLOUD運維工具從入門到精通 - 如何設置主題背景

需要升級到WGCLOUD的v3.5.7或者以上版本&#xff0c;才會支持自定義設置主題背景色 WGCLOUD下載&#xff1a;www.wgstart.com 我們登錄后&#xff0c;在右上角點擊如下的小圖標&#xff0c;就可以設置主題背景色了&#xff0c;包括&#xff1a;經典白&#xff08;默認&#x…

LigerUI在MVC模式下的響應原則

LigerUI是基于jQuery的UI框架&#xff0c;故他也是遵守jQuery的開發模式&#xff0c;但是也具有其特色的偵聽函數&#xff0c;那么當LigerUI作為View層的時候&#xff0c;他所發送后端的必然是表單的數據&#xff0c;在此我們以倆個div為例&#xff1a; {Layout "~/View…