讓您的企業文件具備 AI 就緒能力 — 可靠、內部部署、語意化。
當組織將文件保存在 PDF、DOCX、XLSX 與 ePub 格式時,這是相當常見的情況。雖然大型語言模型(LLM)在 HTML 或純文字上表現良好,但這些原生文件格式在用於 LLM + RAG 工作流程之前,需要先進行轉換,以便我們能夠與文件或文件集合進行對話。
LLM(大型語言模型) — 一種預訓練的 AI 模型,根據大量文字語料生成文本並回答問題。
RAG(檢索增強生成) — 一種結合 LLM 與外部知識庫(例如企業文件)的方式,使模型能檢索並推理領域內容。
以下序列圖說明了產生對問題的答案時的典型步驟:
系統(LLM + RAG)給予的答案品質,同時取決於系統本身與來源文件在送入檢索管線時是否保留了結構與語意。
問題
文件格式不僅是視覺呈現——它還承載語意。標題、清單、表格、粗斜體、說明文字與行內圖像都傳遞了讓 LLM 理解上下文的意義。若僅以 OCR 等將每頁視為平面影像的方式粗暴轉換,往往會遺失這些語意。結果導致 RAG 檢索與後續 LLM 回答出現不精確或雜訊。
OCR 可用於掃描文件,但常會破壞結構(跨頁清單、表格邊框錯誤解讀、註解遺失)。同時在處理大量檔案時也會增加成本與基礎設施負擔。
解決方案
另一種做法是以「結構感知」的方式解析文件,並將該結構匯出為語意化、適合 LLM 使用的格式 — Markdown。Markdown 輕量、廣受支援,且能保留標題、清單、表格、程式碼區塊、強調、說明文字與圖像引用等,正是提升檢索品質的關鍵特性。
GroupDocs.Markdown for .NET 可將常見文件格式(PDF、DOCX、XLSX、ePub 等)轉換為乾淨、語意化的 Markdown,適合匯入 RAG 系統。它是本機端的 .NET 函式庫,所有處理皆在您的環境內完成 —— 無外部服務、無資料外洩、亦不依賴遠端 GPU。
如何開始
GroupDocs.Markdown for .NET 以 NuGet 套件提供,同時亦提供 MSI 與 ZIP 下載。
使用 .NET CLI 安裝套件:
dotnet add package GroupDocs.Markdown
或從官方下載頁面取得安裝檔與組件:https://releases.groupdocs.com/markdown/net/
範例程式(加入至 Program.cs):
// Import the namespace
using GroupDocs.Markdown;
// Set the license (optional for evaluation)
License.Set("GroupDocs.Markdown.lic");
// Instantiate the converter for a source document
var converter = new MarkdownConverter("rich-text-formatting.docx");
// Convert and save output to file
converter.Convert("rich-text-formatting.md");
轉換後的 rich-text-formatting.md 檔案會儲存於與應用程式相同的資料夾。
以下螢幕截圖展示了輸入的 DOCX 檔與輸出的 Markdown。
若未提供授權,評估模式僅會處理有限頁數(例如前 3 頁)。若想體驗完整功能,請申請臨時授權。
欲申請臨時授權,開啟 Purchase Wizard,填寫聯絡資訊,於 Contact Details 步驟點選 Get a temporary license。臨時授權將以電子郵件寄送給您。
了解更多關於臨時授權的資訊:https://purchase.groupdocs.com/temporary-license/
支援的檔案格式
GroupDocs.Markdown for .NET 支援多種企業與電子書常見格式。完整副檔名清單如下:
- PDF
pdf
- 試算表
.xls,.xlsx,.xlsb,.xlsm,.xlt,.xltx,.xltm,.xlam,.csv,.tsv,.ods,.ots,.fods,.numbers,.sxc
- Word / Rich Text
.doc,.docx,.dot,.dotm,.dotx,.docm,.rtf,.odt,.ott
- 電子書
.azw3,.mobi,.epub
- 文字 / 標記 / 說明檔
.chm,.xml,.txt
工作原理(內部概觀)
文件處理時會經過兩個主要階段:
-
文件模型抽取
文件被解析為記憶體中的物件模型,表示段落、標題、清單、表格、圖像、註腳、註解等結構元素。解析器會盡可能保留語意(例如清單層級、表格儲存格、圖像說明)。 -
Markdown 生成
物件模型依設定的轉換選項(如何處理圖像、表格格式、標題層級、特殊註解等)逐一走訪,產出符合 Markdown 規範的檔案,可直接供 RAG 流程索引。
匯出範例
以下程式碼示範了從 DOCX 轉為 Markdown 的過程。接著我們檢視產生的來源與輸出檔案,以說明效果。
來源 DOCX
來源檔案 rich-text-formatting.docx 含有多種內容區塊,並以繁重格式凸顯主要語意元素。
輸出 Markdown
以下是 rich-text-formatting.md 的內容,展示了不同格式元素在生成的 Markdown 中的呈現方式。
# <a name="_toc76372684"></a>**字體格式**
Source Sans Pro Light, 14 pt.
簡單文字(Times New Roman 12)後接空白段落<sub>下標</sub> 與<sup>上標</sup>。
各種字符:‘ “ & < > £ ¥ § ¨ © ª « ® » ¼
段落內有多段文字,使用不同字型、大小與顏色。非常不同的大小與顏色,包括 **粗體**、*斜體*、底線與 1 2 3 4 5 ~~刪除線~~。確保行在 Word 與 PDF 中換行方式相同。
此文字包含底色、醒目標示與框線,且受支援。
# <a name="_toc76372685"></a>**段落格式**
段落底色不應在間距 12 後形成空隙。
居中段落含換行問題。\
居中段落含換行問題。
右對齊段落必須正確對齊。
右對齊段落含換行可正常顯示。\
右對齊段落含換行可正常顯示。
此段落有框線。
右對齊收縮文字有問題。
右對齊展開文字有問題。
間距前後不相加,只使用較大的值。此段落有 12 後距。若縮排不同,底色不會連接。
此段落有 12 前距,但總計只有 12 上方。請注意底色屬於上一段,除非下一段也有底色,否則不會向下延伸。下方有 24 點。
上方有 24 點,但與前段之間的間距僅為 24。
此段落測試雙行距。此段落測試雙行距。首行還有 0.5"。
此段落測試 1.5 行距。此段落測試 1.5 行距。首行縮排 -0.5"。
此段落有分頁符
並且居中。實際產生了兩個段落。
此段落測試恰好 20 點間距。此段落測試恰好 20 點間距。TTTTTT (20, 22, 24, 26, 28, 30)。
此行之後有連續分節符。
此行在新分節。接著是空分節。
此行在第四分節。
# <a name="_toc76372686"></a>**段落對齊**
此段落為單段落且已兩端對齊。111111111111111111111111111111111111111111。
另有兩端對齊 **段落**,因多段落而重設為左對齊。111111111111111111111111111111111111111111。
# **非英文字元**
Wingdings: (x, Symbol: WÄ
俄文:Теперь немного по русски。
# <a name="_toc76372687"></a>**表格**
|Cell 1.1 Left|Cell 1.2 Right|||
| :- | -: | :- | :- |
|Cell 2.1 Centered vertically|Cell 2.2 with background|Cell 2.3 with line break<br>and coloured border.||
|Cell 3.1 Bottom vertically|<p>Cell 3.2</p><p>Centered</p><p>Horizontally</p>|Cell 3.3 No border||
|Left red, blue top, green right and yellow bottom.|
| :- |
|Table with left indent and merged cells.||||
| :- | :- | :- | :- |
|||||
|||||
**儲存格內距等**
|<p>Cell padding.</p><p>Top: 0.1, bottom 0.2</p><p>Left: 0.5, Right 0.4</p>|Zero padding on all sides, right aligned.|
| :- | -: |
|Outer 1.1|Outer 1.2. There is a nested table here||
| :- | :-: | -: |
|**Nested 1.1**|**Nested 1.2**|
| :- | :- |
|||Outer 1.3|
| :- | :-: | -: |
#
# <a name="_toc76372688"></a>**清單**
**編號清單:**
1. 項目 1
1. 項目 2
1. 項目 2.1
1. 項目 2.2
1. 項目 3
**項目符號清單:**
- 項目 1
- 項目 2
- 項目 2.1
- 項目 2.2
- 項目 3
#
# <a name="_toc76372689"></a>**圖片**
此段落從新頁開始。
**橢圓文字**
There is an image in a black border in the top right corner, but it will drop down into the text. There is also a transparent ellipse with text that overlaps the picture.
Inline JPEG in a separate paragraph.
。若要體驗完整產品,請申請臨時授權。
若要申請臨時授權,開啟 Purchase Wizard,提供聯絡資訊,於 Contact Details 步驟點選 Get a temporary license。臨時授權將以電子郵件寄送給您。
了解更多臨時授權資訊:https://purchase.groupdocs.com/temporary-license/
支援的檔案格式
GroupDocs.Markdown for .NET 支援廣泛的企業與電子書常見格式。完整清單如下:
- PDF
pdf
- 試算表
.xls,.xlsx,.xlsb,.xlsm,.xlt,.xltx,.xltm,.xlam,.csv,.tsv,.ods,.ots,.fods,.numbers,.sxc
- Word / Rich Text
.doc,.docx,.dot,.dotm,.dotx,.docm,.rtf,.odt,.ott
- 電子書
.azw3,.mobi,.epub
- 文字 / 標記 / 說明檔
.chm,.xml,.txt
工作原理(內部 — 高階)
當文件被處理時會經過兩個主要階段:
-
文件模型抽取
文件被解析為記憶體中的物件模型,表示段落、標題、清單、表格、圖像、註腳、註解等結構元素。解析器盡力保留語意(例如清單層級、表格儲存格、圖像說明)。 -
Markdown 生成
依據可設定的轉換選項(如何處理圖像、表格格式、標題層級、特殊註解等)遍歷物件模型,產出符合 Markdown 規範的檔案,可直接供 RAG 流程索引。
匯出範例
程式碼示例已說明如何將 DOCX 匯出為 Markdown。以下展示了產生的 Markdown 內容(已翻譯):
# <a name="_toc76372684"></a>**字體格式**
Source Sans Pro Light, 14 pt.
簡單文字(Times New Roman 12)後接空白段落<sub>下標</sub> 與<sup>上標</sup>。
各種字符:‘ “ & < > £ ¥ § ¨ © ª « ® » ¼
段落內有多段文字,使用不同字型、大小與顏色。非常不同的大小與顏色,包括 **粗體**、*斜體*、底線與 1 2 3 4 5 ~~刪除線~~。確保行在 Word 與 PDF 中換行方式相同。
此文字包含底色、醒目標示與框線,且受支援。
# <a name="_toc76372685"></a>**段落格式**
段落底色不應在間距 12 後形成空隙。
居中段落含換行問題。\
居中段落含換行問題。
右對齊段落必須正確對齊。
右對齊段落含換行可正常顯示。\
右對齊段落含換行可正常顯示。
此段落有框線。
右對齊收縮文字有問題。
右對齊展開文字有問題。
間距前後不相加,只使用較大的值。此段落有 12 後距。若縮排不同,底色不會連接。
此段落有 12 前距,但總計只有 12 上方。請注意底色屬於上一段,除非下一段也有底色,否則不會向下延伸。下方有 24 點。
上方有 24 點,但與前段之間的間距僅為 24。
此段落測試雙行距。此段落測試雙行距。首行還有 0.5"。
此段落測試 1.5 行距。此段落測試 1.5 行距。首行縮排 -0.5"。
此段落有分頁符
並且居中。實際產生了兩個段落。
此段落測試恰好 20 點間距。此段落測試恰好 20 點間距。TTTTTT (20, 22, 24, 26, 28, 30)。
此行之後有連續分節符。
此行在新分節。接著是空分節。
此行在第四分節。
# <a name="_toc76372686"></a>**段落對齊**
此段落為單段落且已兩端對齊。111111111111111111111111111111111111111111。
另有兩端對齊 **段落**,因多段落而重設為左對齊。111111111111111111111111111111111111111111。
# **非英文字元**
Wingdings: (x, Symbol: WÄ
俄文:Теперь немного по русски。
# <a name="_toc76372687"></a>**表格**
|Cell 1.1 Left|Cell 1.2 Right|||
| :- | -: | :- | :- |
|Cell 2.1 Centered vertically|Cell 2.2 with background|Cell 2.3 with line break<br>and coloured border.||
|Cell 3.1 Bottom vertically|<p>Cell 3.2</p><p>Centered</p><p>Horizontally</p>|Cell 3.3 No border||
|Left red, blue top, green right and yellow bottom.|
| :- |
|Table with left indent and merged cells.||||
| :- | :- | :- | :- |
|||||
|||||
**儲存格內距等**
|<p>Cell padding.</p><p>Top: 0.1, bottom 0.2</p><p>Left: 0.5, Right 0.4</p>|Zero padding on all sides, right aligned.|
| :- | -: |
|Outer 1.1|Outer 1.2. There is a nested table here||
| :- | :-: | -: |
|**Nested 1.1**|**Nested 1.2**|
| :- | :- |
|||Outer 1.3|
| :- | :-: | -: |
#
# <a name="_toc76372688"></a>**清單**
**編號清單:**
1. 項目 1
1. 項目 2
1. 項目 2.1
1. 項目 2.2
1. 項目 3
**項目符號清單:**
- 項目 1
- 項目 2
- 項目 2.1
- 項目 2.2
- 項目 3
#
# <a name="_toc76372689"></a>**圖片**
此段落從新頁開始。
**橢圓文字**
此圖位於右上角的黑色邊框中,會在文字中向下掉落。另外還有一個透明橢圓,文字會覆蓋在圖片上。
內文段落中的 JPEG:
,我們很樂意提供協助。