MarkItDown: chuyển file Office sang Markdown cho AI

Hướng dẫn dùng MarkItDown của Microsoft chuyển Word, Excel, PowerPoint, PDF sang Markdown để đưa cho AI. Bản 0.1.0 thêm plugin, cài theo nhóm định dạng.

Công cụ AI8 phút đọc
Minh họa nhiều tấm tài liệu nhiều hình dạng đi qua một cửa lọc phát sáng rồi thành các dòng chữ gọn gàng

Thử hình dung anh chị cần AI so doanh số quý này với quý trước. Mở file Excel, bôi đen cả bảng, dán vào ChatGPT. Thứ hiện ra là một dãy số dính chùm, cột tháng Hai nhảy sang cột tháng Ba. AI vẫn tự tin trả lời, chỉ có điều nó đọc nhầm hàng.

Lỗi không nằm ở AI, mà ở cách đưa tài liệu cho nó. MarkItDown của Microsoft sinh ra để làm đúng bước "dọn bàn" đó: biến file Office, PDF thành văn bản gọn gàng mà AI đọc không vấp.

Đọc nhanh trong 30 giây

  • MarkItDown là công cụ Python mã nguồn mở (giấy phép MIT) của Microsoft, chuyển Word, Excel, PowerPoint, PDF và nhiều định dạng khác sang Markdown để đưa cho AI.
  • Bản 0.1.0 ra ngày 22/03/2025 thêm hệ thống plugin, cách cài theo từng nhóm định dạng và chuyển đổi hoàn toàn trong bộ nhớ.
  • Cài bằng pip install 'markitdown[all]', chạy bằng một lệnh markitdown file.pdf -o file.md.
  • Hợp với người hay đưa hợp đồng, báo cáo, slide cho AI tóm tắt hoặc dựng chatbot tra cứu tài liệu nội bộ.

MarkItDown là gì?

MarkItDown là công cụ Python mã nguồn mở của Microsoft, đọc một file rồi trả ra văn bản Markdown giữ được cấu trúc chính: tiêu đề, danh sách, bảng, đường dẫn. Dự án do nhóm AutoGen của Microsoft làm, xuất hiện trên GitHub từ cuối năm 2024.

Markdown là văn bản thường có vài ký hiệu đánh dấu, ví dụ ## cho tiêu đề và | để kẻ bảng. README giải thích vì sao chọn Markdown: các mô hình lớn như GPT-4o "nói" Markdown rất tự nhiên, và cách viết này tốn ít token.

Ví von cho dễ hiểu: anh chị chuyển nhà, đồ đạc đủ hình đủ cỡ. MarkItDown là đội đóng thùng, xếp mọi thứ vào thùng carton cùng cỡ, dán nhãn rõ ràng. Người khuân vác phía sau, tức là AI, không cần biết món nào vốn là bàn hay ghế, cứ thế bê đi.

Trước và sau khi dùng MarkItDown: dán bảng Excel thô vào AI so với đưa bảng Markdown gọn gàng

Cùng một bảng doanh số, hai cách đưa cho AI.

MarkItDown đọc được những file nào?

Theo README bản 0.1.0, MarkItDown đọc được gần như mọi loại file văn phòng hay gặp:

Các loại file MarkItDown đọc được đi qua bộ chuyển đổi và plugin để ra Markdown cho AI

Nhiều cửa vào, một cửa ra là Markdown.

  • PDF, Word, PowerPoint, Excel
  • Ảnh (đọc thông tin EXIF và chữ trong ảnh)
  • Âm thanh (thông tin EXIF và chuyển giọng nói thành chữ)
  • HTML, CSV, JSON, XML
  • File ZIP (đọc lần lượt từng file bên trong)
  • Đường dẫn YouTube
  • EPUB, định dạng mới thêm ở bản này

README cũng nói thẳng giới hạn: kết quả dành cho công cụ phân tích văn bản đọc, không phải để chuyển đổi tài liệu đẹp cho người xem.

Bản 0.1.0 thay đổi gì?

MarkItDown 0.1.0 đổi cách cài, thêm plugin và chuyển đổi hoàn toàn trong bộ nhớ, theo ghi chú phát hành trên GitHub.

Thay đổi Ý nghĩa với người dùng
Thư viện phụ chia theo nhóm định dạng Chỉ cài phần cần, ví dụ chỉ PDF và Word; muốn đủ như cũ thì cài markitdown[all]
Kiến trúc plugin Bên thứ ba viết thêm bộ chuyển đổi cho định dạng mới
Chuyển đổi trong bộ nhớ Không tạo file tạm trên ổ đĩa nữa
Hỗ trợ EPUB Đọc được sách điện tử
Giữ ảnh dạng data URI Tùy chọn giữ ảnh nhúng trong kết quả
Khai báo kiểu file ở dòng lệnh Hữu ích khi đưa dữ liệu qua đường ống, không có tên file

Plugin giống việc lắp thêm lưỡi cho con dao đa năng: con dao gốc vẫn vậy, ai cần cắt loại vật liệu lạ thì gắn thêm lưỡi phù hợp.

Ghi chú phát hành cũng cảnh báo một thay đổi không tương thích: hàm convert_stream() giờ chỉ nhận dữ liệu nhị phân, ai đã tự viết bộ chuyển đổi riêng cần sửa code. Người chỉ dùng dòng lệnh hoặc lớp MarkItDown thì không phải đổi gì.

Cài MarkItDown trong một phút

Yêu cầu Python 3.10 trở lên, giấy phép MIT (theo file pyproject.toml của bản 0.1.0).

Các lệnh cài MarkItDown, chuyển file và bật plugin trong terminal

Cài đủ hoặc cài từng phần, rồi một lệnh là có file Markdown.

  1. Cài đủ mọi định dạng:
pip install 'markitdown[all]'
  1. Hoặc chỉ cài phần cần dùng, ví dụ PDF, Word, PowerPoint:
pip install markitdown[pdf, docx, pptx]

Các nhóm có sẵn: [pptx], [docx], [xlsx], [xls], [pdf], [outlook], [az-doc-intel], [audio-transcription], [youtube-transcription].

  1. Chuyển một file bằng dòng lệnh:
markitdown path-to-file.pdf -o document.md
  1. Xem và bật plugin (plugin tắt mặc định):
markitdown --list-plugins
markitdown --use-plugins path-to-file.pdf

README hướng dẫn tìm plugin trên GitHub bằng hashtag #markitdown-plugin. Repo có sẵn plugin mẫu đọc file RTF trong thư mục packages/markitdown-sample-plugin.

Mẹo

Chuyển xong, mở file .md ra xem bảng trước khi đưa cho AI. Bảng nào đủ cột, đúng hàng thì AI đọc chuẩn; bảng lệch thì sửa tay vài chỗ còn nhanh hơn ngồi cãi với AI về con số sai.

Thử ngay với hai việc văn phòng

Việc 1: đưa bảng Excel cho AI phân tích. Phòng kinh doanh có file báo cáo doanh số. Thay vì chụp màn hình hay bôi đen dán, anh chị chạy:

markitdown bao-cao-doanh-so-q1.xlsx -o bao-cao-doanh-so-q1.md

Rồi dán nội dung file vào khung chat kèm câu hỏi: "Dựa trên bảng này, sản phẩm nào giảm doanh số so với tháng trước? Trả lời bằng bảng." Bảng Markdown giữ đúng hàng và cột, nên AI ít đọc nhầm số hơn so với chữ thô.

Việc 2: nhờ AI mô tả ảnh trong Python. README có ví dụ cho MarkItDown dùng mô hình OpenAI để viết mô tả cho ảnh:

from markitdown import MarkItDown
from openai import OpenAI

client = OpenAI()
md = MarkItDown(llm_client=client, llm_model="gpt-4o")
result = md.convert("example.jpg")
print(result.text_content)

Cách này hợp khi anh chị có thư mục ảnh hiện trường, ảnh sản phẩm cần chuyển thành chữ để tìm kiếm về sau. Muốn tài liệu không ra khỏi công ty, có thể ghép MarkItDown với một mô hình chạy trong nhà như DeepSeek-R1.

Những chỗ MarkItDown chưa làm được

Lưu ý

  • Không giữ định dạng đẹp. Màu chữ, phông, bố cục trang mất hết. MarkItDown để máy đọc, không để in.
  • PDF scan. README nói MarkItDown đọc chữ trong ảnh nhưng không nói gì về PDF chỉ chứa ảnh scan. Với loại này, README có tùy chọn dùng Azure Document Intelligence (nhóm [az-doc-intel], cần tài khoản Azure). README cũng không nói về chất lượng với tiếng Việt.
  • Mô tả ảnh tốn phí API. Dùng llm_client là gửi ảnh lên nhà cung cấp mô hình, tính tiền theo lượt gọi.
  • Plugin là code của người khác. Plugin tắt mặc định là có lý do. Chỉ bật plugin đã đọc mã nguồn hoặc từ nguồn tin cậy.
  • Nâng cấp từ 0.0.x. Trước đây cài pip install markitdown rồi dùng cho PDF, Word thì lên 0.1.0 phải cài thêm nhóm tương ứng hoặc [all], không thì báo thiếu thư viện.

Nhận xét của chuyên gia

Trong các dự án đưa AI vào doanh nghiệp, phần mất thời gian nhất thường không phải chọn mô hình mà là làm sạch tài liệu đầu vào. Hồ sơ công ty Việt Nam nằm rải trong Word, Excel, PDF, email Outlook. MarkItDown giải đúng bước đó, miễn phí, giấy phép MIT, và do Microsoft duy trì nên tôi yên tâm hơn so với một script cá nhân.

Hợp với ai: nhóm dựng chatbot tra cứu tài liệu nội bộ; phòng pháp chế, hành chính cần đưa văn bản cho AI tóm tắt; người làm kỹ thuật cần một bước chuyển đổi đặt trước mọi luồng xử lý AI.

Chưa hợp với ai: việc cần giữ nguyên trình bày, như chuyển hợp đồng sang định dạng khác để ký; kho tài liệu toàn PDF scan chất lượng thấp, khi đó cần đầu tư OCR riêng trước. Rủi ro tôi hay gặp: bảng Excel có ô gộp, nhiều tầng tiêu đề thường ra Markdown lệch cột, nhất là bảng có số tiền.

Cách bắt đầu của tôi: chọn 10 tài liệu tiêu biểu của phòng ban, chuyển bằng MarkItDown, so từng file với bản gốc, ghi lại loại nào ra tốt, loại nào hỏng. Có bảng ghi chép đó rồi mới tự động hóa cả thư mục. Xem thêm các mốc khác trong chuỗi dòng thời gian AI.

Một câu để nhớ: AI đọc giỏi tới đâu cũng thua một tài liệu được dọn sạch từ đầu.

Câu hỏi thường gặp

MarkItDown có miễn phí không?

MarkItDown miễn phí, mã nguồn mở theo giấy phép MIT. Chỉ tốn phí khi anh chị dùng thêm dịch vụ ngoài như mô hình OpenAI để mô tả ảnh hoặc Azure Document Intelligence để đọc PDF.

Vì sao sau khi nâng cấp MarkItDown lại không đọc được PDF?

Từ bản 0.1.0, thư viện đọc từng định dạng được tách thành nhóm tùy chọn. Cài lại bằng pip install 'markitdown[all]' hoặc pip install markitdown[pdf] là đọc được.

MarkItDown có đọc được PDF scan không?

README không nói rõ MarkItDown tự đọc PDF scan. Cách chắc hơn là dùng tùy chọn Azure Document Intelligence có sẵn trong MarkItDown, cần tài khoản Azure và tốn phí theo dịch vụ đó.

Plugin của MarkItDown dùng để làm gì?

Plugin cho phép bên thứ ba thêm bộ chuyển đổi cho định dạng MarkItDown chưa hỗ trợ, ví dụ plugin mẫu đọc file RTF. Plugin tắt mặc định, bật bằng cờ --use-plugins.

Nguồn: microsoft/markitdown v0.1.0 trên GitHub, 22/03/2025.

Nguồn tham khảo: https://github.com/microsoft/markitdown/releases/tag/v0.1.0

Zalo

TA-Assistant

System Online
Xin chào! Tôi là trợ lý AI của Tuấn Anh. Tôi có thể giúp gì cho bạn hôm nay?