นำเอกสารของคุณเข้าสู่สายงาน AI — โดยตรงจาก Python, ทำงานบนเครื่องของคุณเอง, เพียง pip install ครั้งเดียว

วันนี้เราปล่อย รุ่นแรกสาธารณะของ GroupDocs.Markdown สำหรับ Python ผ่าน .NET บน PyPI ไลบรารีนี้แปลง PDF, Word, Excel, EPUB และรูปแบบอื่น ๆ อีกกว่า 20 รูปแบบให้เป็น Markdown ที่สะอาดและมีความหมาย — รูปแบบที่ LLMs, สายงาน RAG, และเครื่องสร้างเว็บไซต์แบบสถิตทำงานได้ดีที่สุด

หากคุณได้ติดตาม การปล่อย .NET ตั้งแต่เดือนกันยายน (หรือ การปรับโครงสร้าง API อย่างเต็มรูปแบบในเวอร์ชัน 26.3) เหตุผลก็เหมือนกัน: การจัดรูปแบบเอกสารบรรจุความหมาย, และการรักษาโครงสร้างความหมายนี้คือสิ่งที่ทำให้ระบบ RAG ให้คำตอบที่ดี บทความก่อนหน้านี้ครอบคลุม ปัญหา (OCR ทำให้โครงสร้างแบนลง, LLMs ต้องการ markdown) และ วิธีแก้ (เรนเดอร์แบบ DOM ที่เดินผ่านเอกสารและสร้าง Markdown) อย่างละเอียด — เราจะไม่ซ้ำเรื่องนั้นที่นี่

แทนที่จะทำเช่นนั้น เราจะมุ่งเน้นที่สิ่งใหม่สำหรับนักพัฒนา Python


สิ่งที่คุณได้รับ

  • Wheel เพียงไฟล์เดียว, ไม่มีการพึ่งพา runtime. pip install groupdocs-markdown-net จะดึง wheel ที่บรรจุ .NET runtime และไลบรารีเนทีฟทั้งหมดที่จำเป็น ไม่ต้องติดตั้ง dotnet, ไม่ต้องมี Microsoft Office, ไม่ต้องมี Adobe Acrobat, ไม่ต้องใช้บริการคลาวด์
  • ข้ามแพลตฟอร์ม. Windows x64/x86, Linux x64, macOS x64 และ Apple Silicon (ARM64) รองรับ Python 3.5 ถึง 3.14
  • API แบบ pythonic. คลาสใช้ PascalCase, เมธอดและพร็อพเพอร์ตี้ใช้ snake_case, ค่า enum ใช้ UPPER_SNAKE_CASE ตัวจัดการบริบท (context managers) จะทำลายเอกสารที่โหลดอย่างกำหนดได้
  • รองรับ async อย่างแท้จริง. ทุกเมธอดแบบ static และ instance มีเวอร์ชัน _async ไฟล์ I/O ทำงานแบบ asynchronous และการแปลงที่ใช้ CPU ทำงานบน worker thread — ลูปเหตุการณ์ asyncio ของคุณจะไม่ถูกบล็อก
  • เป็นมิตรกับ AI‑agent. Wheel ที่ติดตั้งมาพร้อมไฟล์ AGENTS.md เพื่อให้ผู้ช่วยเขียนโค้ด (Claude Code, Cursor, GitHub Copilot, Codex) ค้นพบ API, รูปแบบการใช้ที่เป็น idiomatic, และเคล็ดลับการแก้ปัญหาโดยอัตโนมัติ เอกสารยังเผยแพร่เป็น llms.txt, คอร์ปัสไฟล์เดียว (llms-full.txt), Markdown แยกหน้า, และเซิร์ฟเวอร์ MCP — ดูรายละเอียดในส่วน AI-friendly by design ด้านล่าง

เริ่มต้นใช้งาน

pip install groupdocs-markdown-net

การแปลงที่ง่ายที่สุดคือบรรทัดเดียว:

from groupdocs.markdown import MarkdownConverter

# แปลงเป็นสตริง
md = MarkdownConverter.to_markdown("business-plan.docx")

# หรือเขียนโดยตรงลงไฟล์
MarkdownConverter.to_file("business-plan.docx", "business-plan.md")

แค่นั้น — ไม่ต้องตั้งค่า, ไม่ต้องออปชัน, ไม่ต้องโค้ดซ้ำ โหมดประเมินผลจะประมวลผล 3 หน้าแรกและใส่ลายน้ำ หากต้องการลบข้อจำกัด ให้ใช้ไลเซนส์:

from groupdocs.markdown import License

License().set_license("path/to/license.lic")

หรือกำหนดตัวแปรสภาพแวดล้อม GROUPDOCS_LIC_PATH แล้วไลเซนส์จะถูกนำไปใช้โดยอัตโนมัติเมื่อ import


รูปแบบที่รองรับ

แพคเกจ Python รองรับรูปแบบเดียวกับไลบรารี .NET:

  • PDF.pdf
  • Word / Rich Text.doc, .docx, .docm, .dot, .dotx, .dotm, .rtf, .odt, .ott
  • สเปรดชีต.xls, .xlsx, .xlsb, .xlsm, .csv, .tsv, .ods, .ots
  • อีบุ๊ค.epub, .mobi
  • ข้อความ / มาร์กอัป / ช่วยเหลือ.txt, .xml, .chm

ตัวอย่างแบบ pythonic

ตัวเลือกการแปลงและกลยุทธ์การจัดการรูปภาพ

from groupdocs.markdown import (
    MarkdownConverter,
    ConvertOptions,
    MarkdownFlavor,
    ExportImagesToFileSystemStrategy,
)

strategy = ExportImagesToFileSystemStrategy("output/images")
strategy.images_relative_path = "images"  # ![](images/img-001.png)

options = ConvertOptions()
options.flavor = MarkdownFlavor.GIT_HUB
options.heading_level_offset = 1      # # Title -> ## Title
options.include_front_matter = True    # prepend YAML metadata
options.image_export_strategy = strategy

MarkdownConverter.to_file("report.docx", "output/report.md", convert_options=options)

ตรวจสอบเอกสารโดยไม่แปลง

from groupdocs.markdown import MarkdownConverter

info = MarkdownConverter.get_info("business-plan.docx")
print(f"{info.file_format}, {info.page_count} pages, author: {info.author}")

โหลดไฟล์ที่มีรหัสผ่าน

from groupdocs.markdown import MarkdownConverter, LoadOptions, FileFormat

load_opts = LoadOptions(FileFormat.DOCX)
load_opts.password = "secret"

MarkdownConverter.to_file("protected.docx", "output.md", load_options=load_opts)

สตรีมและตัวจัดการบริบท

from groupdocs.markdown import MarkdownConverter

with open("document.docx", "rb") as stream:
    with MarkdownConverter(stream) as converter:
        converter.convert("document.md")

Async API — แปลงหลายไฟล์พร้อมกัน

เนื่องจากไฟล์ I/O ทำงานแบบ asynchronous, asyncio.gather() ทำให้ worker ตัวเดียวสามารถประมวลผลหลายไฟล์โดยไม่บล็อก:

import asyncio
from groupdocs.markdown import MarkdownConverter

async def convert_many():
    await asyncio.gather(
        MarkdownConverter.to_file_async("a.docx", "a.md", None),
        MarkdownConverter.to_file_async("b.pdf",  "b.md", None),
        MarkdownConverter.to_file_async("c.xlsx", "c.md", None),
    )

asyncio.run(convert_many())

ทำให้ไลบรารีนี้เข้ากันได้อย่างลงตัวกับเฟรมเวิร์ก ASGI อย่าง FastAPI — worker ตัวเดียวสามารถให้บริการคำขอแปลงหลายคำขอพร้อมกันโดยไม่มีการแย่งทรัพยากรของเธรด

การจัดการข้อผิดพลาด

เมธอดการแปลงทั้งหมดจะโยนข้อยกเว้นเมื่อเกิดความล้มเหลว, พร้อมประเภทข้อยกเว้นเฉพาะสำหรับสถานการณ์ทั่วไป:

from groupdocs.markdown import (
    MarkdownConverter,
    DocumentProtectedException,
    InvalidFormatException,
    GroupDocsMarkdownException,
)

try:
    MarkdownConverter.to_file("annual-report.docx", "annual-report.md")
except DocumentProtectedException:
    print("Wrong or missing password.")
except InvalidFormatException:
    print("File is corrupt or unsupported.")
except GroupDocsMarkdownException as ex:
    print(f"Conversion failed: {ex}")

สร้างขึ้นสำหรับ RAG และสายงาน LLM

Markdown เป็นรูปแบบอินพุตที่นิยมสำหรับโมเดลฝังข้อมูลและสายงานการดึงคืนข้อมูล — มันรักษาหัวข้อ, รายการ, ตาราง, และการเน้นข้อความไว้ในขณะที่ง่ายต่อการแบ่งส่วนและทำ tokenization ตัวอย่างการนำเข้า RAG ปกติเป็นดังนี้:

import re
from groupdocs.markdown import MarkdownConverter, ConvertOptions, SkipImagesStrategy, MarkdownFlavor

options = ConvertOptions()
options.image_export_strategy = SkipImagesStrategy()   # text-only for RAG
options.flavor = MarkdownFlavor.COMMON_MARK

MarkdownConverter.to_file("business-plan.pdf", "business-plan.md", convert_options=options)

with open("business-plan.md", "r", encoding="utf-8") as f:
    markdown = f.read()

# แบ่งตามหัวข้อระดับบนสุด, แล้วฝัง/ทำดัชนีแต่ละส่วน
chunks = [c for c in re.split(r"\n#{1,2} ", markdown) if c.strip()]

เนื่องจากไลบรารีทำงานทั้งหมดบนเครื่องของคุณเอง เอกสารที่เป็นความลับจะไม่ออกจากสภาพแวดล้อมของคุณ — ความต้องการทั่วไปสำหรับอุตสาหกรรมที่ต้องปฏิบัติตามกฎระเบียบ, ทีมกฎหมาย, และฐานความรู้ภายใน


AI-friendly by design

SDK ของ Python ส่วนใหญ่มองผู้ช่วยเขียนโค้ด AI เป็นเรื่องรองหลังจากการพัฒนา — นักพัฒนาต้องชี้ตัวแทนไปที่เอกสาร, วางตัวอย่าง, หรือดีบักด้วยการลองผิดลองถูก GroupDocs.Markdown สำหรับ Python ผ่าน .NET กลับกัน: ไลบรารีออกแบบให้ตัวแทนอย่าง Claude Code, Cursor, GitHub Copilot, และ Codex สามารถใช้งานได้โดยไม่ต้องตั้งค่าใด ๆ

AGENTS.md มาพร้อมกับ wheel

นี่คือแพคเกจ GroupDocs แรกที่บรรจุไฟล์ AGENTS.md ไว้ภายใน wheel ที่ติดตั้ง ไฟล์นี้สอดคล้องกับ มาตรฐาน AGENTS.md — README แบบ Markdown ธรรมดาที่เขียนเฉพาะสำหรับผู้ช่วยเขียนโค้ด AI แทนมนุษย์

เมื่อคุณรัน pip install groupdocs-markdown-net ไฟล์จะถูกวางที่:

site-packages/groupdocs/markdown/AGENTS.md

ผู้ช่วย AI ที่เปิดโปรเจกต์ของคุณสามารถอ่านไฟล์นี้และเรียนรู้ทันที:

  • พื้นผิว API สาธารณะทั้งหมด (คลาส, เมธอด, enum, ข้อยกเว้น) และความสัมพันธ์ระหว่างกัน
  • รูปแบบการใช้ที่ idiomatic สำหรับสถานการณ์ที่พบบ่อย — API แบบ static vs instance, sync vs async, กลยุทธ์รูปภาพ, front matter, การจัดการข้อผิดพลาด
  • ข้อผิดพลาดทั่วไป และวิธีหลีกเลี่ยง — เช่น overload ของ ConvertOptions ที่รับ None, วิธีจัดการไฟล์ที่มีรหัสผ่าน, วิธีดักจับคำเตือนการแปลง
  • การแก้ปัญหา สำหรับปัญหาเฉพาะแพลตฟอร์ม (libSkiaSharp บน macOS, ICU บน Linux)

ในทางปฏิบัติหมายความว่าคุณสามารถบอก “ใช้ groupdocs-markdown-net เพื่อแปลงโฟลเดอร์ PDF นี้เป็น Markdown สำหรับสายงาน RAG ของฉัน” แล้วตัวแทนจะเขียนโค้ดที่ทำงานได้ตั้งแต่ครั้งแรก — ไม่มีชื่อเมธอดที่สร้างขึ้นจากจินตนาการ, ไม่มีการจัดลำดับอาร์กิวเมนต์ที่ผิด, ไม่มีการคาดเดา import

เอกสารที่อ่านได้โดยเครื่อง

สำหรับตัวแทนที่ต้องการค้นหาข้อมูลที่ไม่ได้อยู่ใน AGENTS.md เอกสารผลิตภัณฑ์เต็มรูปแบบก็พร้อมในรูปแบบที่เครื่องอ่านได้:

  • คอร์ปัสไฟล์เดียว — เอกสารทั้งหมดเป็นไฟล์ Markdown รวมเดียว, พร้อมใส่ลงใน context window ของตัวแทน: https://docs.groupdocs.com/markdown/python-net/llms-full.txt
  • Markdown แยกหน้า — เพิ่ม .md ต่อท้าย URL ของเอกสารใด ๆ เพื่อดึงซอร์สดิบ: https://docs.groupdocs.com/markdown/python-net/quick-start-guide.md
  • ดัชนี llms.txt — ตารางเนื้อหาแบบ llms.txt ที่ชี้ตัวแทนไปยังหน้าที่ต้องการ: https://docs.groupdocs.com/markdown/python-net/llms.txt

เซิร์ฟเวอร์ MCP สำหรับการค้นหาเอกสารแบบเรียลไทม์

สำหรับตัวแทนที่ใช้ Model Context Protocol เราเปิดให้เข้าถึงเอกสารผ่านเซิร์ฟเวอร์ MCP เพิ่มการตั้งค่านี้ในไฟล์กำหนดค่า Claude Code หรือ Cursor ของคุณ:

{
  "mcpServers": {
    "groupdocs-docs": {
      "url": "https://docs.groupdocs.com/mcp"
    }
  }
}

หลังจากนั้น ตัวแทนของคุณสามารถสอบถามเอกสารได้ตามต้องการ แทนการพึ่งพาข้อมูลการฝึกที่อาจล้าสมัย

Markdown เข้า, Markdown ออก

ที่นี่มีความสมดุลที่สวยงาม: ผลลัพธ์ ของไลบรารีคือ Markdown — รูปแบบที่ LLMs วิเคราะห์ได้ดีที่สุดสำหรับ RAG — และ เอกสาร ของไลบรารีก็เป็น Markdown ด้วย, ให้บริการเป็นไฟล์เดียวเพื่อการนำเข้าข้อมูลใน context window ไม่ว่าจะเป็นการให้ตัวแทนเขียนโค้ดที่ใช้ไลบรารี หรือให้ตัวแทนทำความเข้าใจเอกสารของคุณผ่านไลบรารี, Markdown คือสื่อกลางที่ใช้ร่วมกัน


ตัวอย่างการส่งออก

โค้ดตัวอย่างข้างต้นเป็นโปรแกรมที่สั้นที่สุดที่ใช้งานได้กับไลบรารี นี่คือแนวคิดเดียวกันที่จัดเป็นโปรเจกต์ที่สามารถรันได้ — เอกสารต้นฉบับ, สคริปต์ Python, ผลลัพธ์ที่สร้างไว้ล่วงหน้า, requirements.txt, และ Dockerfile — เพื่อให้คุณลองจากต้นจนจบโดยไม่ต้องเขียนอะไรจากศูนย์

ไฟล์ DOCX ต้นฉบับ

ไฟล์ต้นฉบับ business-plan.docx เป็นแผนธุรกิจสั้น ๆ ที่มีการจัดรูปแบบอย่างละเอียด มีหัวข้อ, ตาราง, รูปภาพ, และเมตาดาต้า

สคริปต์ Python

from groupdocs.markdown import MarkdownConverter, ConvertOptions, MarkdownFlavor

def quick_example():
    """Convert a Word document to Markdown with GitHub flavor and YAML front matter."""

    # One-liner — returns a Markdown string
    md = MarkdownConverter.to_markdown("business-plan.docx")

    # With options — writes to a file
    options = ConvertOptions()
    options.flavor = MarkdownFlavor.GIT_HUB
    options.include_front_matter = True
    options.heading_level_offset = 1
    MarkdownConverter.to_file("business-plan.docx", "quick-example.md", convert_options=options)

if __name__ == "__main__":
    quick_example()

Markdown ที่ได้

ผลลัพธ์ quick-example.md เริ่มด้วยบล็อก YAML front‑matter ที่สกัดอัตโนมัติจากเมตาดาต้าเอกสาร, ตามด้วยเนื้อหาที่แปลงแล้วพร้อมตารางแบบ GitHub Flavored และระดับหัวข้อที่เลื่อนขึ้น (พร้อมฝังในเอกสารที่ใหญ่กว่า)

แอปตัวอย่างที่รันได้

ทุกอย่างบรรจุไว้ด้วยกัน: sample-app.zip แตกไฟล์แล้ว:

cd src
python -m venv .venv
# Windows: .venv\Scripts\activate
# Linux/macOS: source .venv/bin/activate
pip install -r requirements.txt
python quick_example.py

หรือรันใน Docker — Dockerfile ที่รวมมานี้ตั้งค่า dependency ICU ที่ .NET runtime ต้องการบน Linux:

cd src
docker build -t groupdocs-markdown-python-example .
docker run --rm -v "$(pwd)/output:/app/output" groupdocs-markdown-python-example

สรุป

GroupDocs.Markdown สำหรับ Python ผ่าน .NET นำเอาเอนจินการแปลงเอกสารเป็น Markdown มาสู่ Python ในรูปแบบ wheel ที่บรรจุครบทุกอย่าง — ไม่ต้องมี runtime ภายนอก, ไม่ต้องใช้คลาวด์, ไม่มีเซอร์ไพรส์ API แบบ pythonic, รองรับ async, และรวมการผสานเครื่องมือ AI ระดับแรก ทำให้เป็นตัวเลือกที่ใช้งานได้จริงสำหรับทีม Python ที่สร้างระบบ RAG, เครื่องสร้างเว็บไซต์สถิติ, หรือสายงานประมวลผลเอกสาร


เรียนรู้เพิ่มเติม


การสนับสนุน & ข้อเสนอแนะ

หากมีคำถามหรือขอความช่วยเหลือด้านเทคนิค โปรดใช้ Free Support Forum — เราจะยินดีช่วยเหลือคุณ.