บล็อก

PDF ใน Claude Code: การแปลง โทเค็น และการรักษาโครงสร้าง

Markdown

MarkItDown, PyMuPDF4LLM, MCP, สคริปต์แปลงไฟล์ฉบับสมบูรณ์ ข้อจำกัดของ PDF และกรณีที่การวิเคราะห์ภาพสำคัญกว่าการประหยัดโทเค็น

อ่านบทความฉบับเต็ม

ประเด็นสำคัญ

PDF แต่ละหน้าใน Claude Code ใช้ 1,500–3,000 โทเค็นก่อนถามคำถามแรก และ Anthropic ระบุเรื่องนี้ไว้อย่างชัดเจนในเอกสารประกอบ ตัวอย่างคำนวณด้านล่างใช้รายงาน 15 หน้าใน 4 แชต ได้อินพุต PDF 135,000 โทเค็นประมาณ $0.40 เทียบ Markdown 18,000 โทเค็นหรือ $0.054 ลดราว 87% โดยสมมติ 2,250 โทเค็น PDF หรือ 300 โทเค็น Markdown ต่อหน้าในราคาอินพุตตัวอย่าง เอกสารจริงอาจต่างกัน คู่มือนี้ครอบคลุมวิธีแปลง 3 วิธี (MarkItDown, PyMuPDF4LLM และเซิร์ฟเวอร์ MCP) พร้อมสคริปต์ bash ที่นำไปใช้ได้ทันทีสำหรับโฟลเดอร์เอกสาร

ดูคำแนะนำการใช้งาน Ailoot ได้ในเอกสารประกอบ

PDF ใน Claude ทำงานอย่างไร และทำไมแต่ละหน้าจึงใช้ 1,500–3,000 โทเค็น?

ประเด็นสำคัญ

เมื่ออัปโหลด PDF ไปยัง Claude Code ระบบไม่ได้อ่านไฟล์นั้นเป็นไฟล์ข้อความ แต่จะแปลงแต่ละหน้าเป็นภาพก่อน จากนั้นจึงดึงข้อความออกมา และเพิ่มข้อมูลทั้งสองชั้น—ทั้งภาพและข้อความ—เข้าไปในบริบทพร้อมกัน นี่คือเหตุผลที่หน้าเดียวใช้พื้นที่ 1,500–3,000 โทเค็น และเอกสาร 50 หน้าอาจใช้ 75,000–150,000 โทเค็นก่อนที่คุณจะถามคำถามแรก

เอกสารอย่างเป็นทางการของ Anthropic อธิบายขั้นตอนไว้เป็น 3 ขั้นตอนง่าย ๆ:

ระบบแปลงแต่ละหน้าเอกสารเป็นภาพ ระบบจะดึงข้อความจากแต่ละหน้าและส่งมาพร้อมกับภาพของหน้านั้น Claude วิเคราะห์ทั้งข้อความและภาพเพื่อทำความเข้าใจเอกสารได้ดียิ่งขึ้น

— Anthropic, https://platform.claude.com/docs/en/docs/build-with-claude/pdf-support

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

โดยทั่วไปแต่ละหน้าใช้ 1,500–3,000 โทเค็น ขึ้นอยู่กับความหนาแน่นของเนื้อหา เนื่องจากแต่ละหน้าถูกแปลงเป็นภาพ จึงมีต้นทุนเท่ากับการประมวลผลภาพทั่วไป

— Anthropic, https://platform.claude.com/docs/en/docs/build-with-claude/pdf-support

เพื่อให้เห็นภาพว่าเป็นปริมาณเท่าใด Anthropic วัด PDF 3 หน้าไฟล์เดียวกันบน Bedrock ใน 2 โหมด ในโหมดข้อความ (Converse Document Chat) ใช้ ~1,000 โทเค็น ส่วนการวิเคราะห์ภาพ (Claude PDF Chat) ใช้ ~7,000 โทเค็น การรวมภาพทำให้การประมวลผลแพงขึ้น 7 เท่า

ภาพหน้าจอของหน้ายิ่งแย่กว่า ภาพหน้าจอขนาด 1000×1000 พิกเซลใช้ประมาณ 1,300 โทเค็น

หลักการทำงานนั้นเรียบง่าย: PDF มีต้นทุนสูงเพราะ Claude ไม่เชื่อถือ OCR ของตัวเอง จึงใช้ทั้งข้อความและภาพเพื่อเปรียบเทียบกัน และคุณต้องจ่ายสำหรับข้อมูลทั้งสองชั้นพร้อมกัน สำหรับเอกสารขนาดใหญ่ คุณทำได้อีกแบบ: บันทึกไฟล์เป็น Markdown ไว้ในโฟลเดอร์โปรเจกต์ แล้วบอก Claude ว่า “นี่คือเอกสารที่มีข้อมูลอยู่ ช่วยแยกข้อมูลออกเป็นส่วน ๆ” Claude จะกระจายเนื้อหาไปยังไฟล์ของตัวเอง แล้วทำงานต่อกับข้อความที่จัดระเบียบไว้ แทนที่จะประมวลผลทุกอย่างพร้อมกัน

โดยทั่วไป PDF ใช้โทเค็นเท่าใดในงานหนึ่ง?

ประเด็นสำคัญ

สมมติรายงานสาธารณะ 15 หน้าใช้ใน 4 บริบท ได้แก่ วิเคราะห์ อ้างข้อความ แปล และสรุป ให้ PDF ใช้ 2,250 โทเค็นอินพุตต่อหน้า Markdown ที่แปลงใช้ 300 และทั้งคู่ราคาอินพุตเท่ากัน อัปโหลด PDF ซ้ำได้ 135,000 โทเค็นประมาณ $0.40 ส่วน Markdown ได้ 18,000 หรือ $0.054 การประหยัดราว 87% มาจากสมมติฐานนี้ ไม่ใช่ผลวัด PDF ทุกไฟล์

ตัวเลขเฉพาะ (โมเดล Sonnet 4.x, อินพุตราคา $3 ต่อหนึ่งล้านโทเค็น):

วิธีโทเค็น (15 หน้า, 4 แชต)ค่าใช้จ่าย
อัปโหลด PDF โดยตรง 4 ครั้ง15 × 2250 × 4 = 135,000~$0.40
PDF → Markdown + 4 แชต15 × 300 × 4 = 18,000~$0.054
ประหยัด−87%−$0.35

และนี่เป็นเพียงรอบเดียวของคำขอ 4 ครั้ง หลังจากนั้น prompt caching จะเข้ามาช่วย (TTL 5 นาทีเป็นค่าเริ่มต้น สูงสุด 1 ชั่วโมงในระดับบริการแบบขยาย พร้อมส่วนลดสูงสุด 90% สำหรับการเรียกซ้ำภายในช่วงเวลา)—ทำให้ประหยัดได้มากขึ้น

ทุกครั้งที่คุณอัปโหลด PDF ไฟล์เดิมในแชตใหม่ Claude จะอ่านไฟล์นั้นอีกครั้ง แคชจะไม่ส่งต่อระหว่างแชต

หากแปลง PDF 15 หน้าเป็น Markdown ครั้งเดียวแล้วใช้ .md ในแชตใหม่ 4 ครั้ง ตัวอย่างนี้ใช้อินพุต 15 × 300 × 4 = 18,000 โทเค็นแทน 135,000 ค่า 300 ต่อหน้าแปลงและ 2,250 ต่อหน้า PDF เป็นสมมติฐานคำนวณ ไม่ใช่ค่าคงที่ที่วัดได้สำหรับทุกไฟล์ ต้องนับเอกสารจริงและตรวจคุณภาพแปลงก่อนประมาณการประหยัด

การคำนวณนี้ยิ่งมีความหมายมากขึ้นเมื่อใช้การสมัครสมาชิก Claude Pro รายงาน 100 หน้าเพียงฉบับเดียวอาจใช้โควตา 5 ชั่วโมงจนหมด หลังแปลงเป็น Markdown แล้ว เอกสารลักษณะนี้มากกว่า 10 ฉบับจะอยู่ภายในงบการใช้งานเดียวกัน

ข้อจำกัด API ของ Anthropic สำหรับ PDF ในปี 2026 มีอะไรบ้าง?

ประเด็นสำคัญ

Anthropic กำหนดข้อจำกัดอย่างเข้มงวด: ขนาดสูงสุด 32 MB ต่อคำขอ (รวมเนื้อหาทั้งหมด ไม่ใช่แค่ PDF) และสูงสุด 600 หน้าต่อคำขอ แต่ข้อจำกัดจะต่ำกว่านี้สำหรับโมเดล Sonnet 4.x และ Opus 4.x รุ่นปัจจุบันที่มีบริบท 200K: 100 หน้า คุณส่ง PDF ได้ 3 วิธี ได้แก่ ผ่าน URL, ในรูปแบบ Base64 หรือผ่าน Files API เพื่อใช้ซ้ำด้วย file_id เอกสารยาวใช้ Files API ร่วมกับการแบ่งเป็นส่วน ๆ

เอกสารของ Anthropic แสดงข้อจำกัดไว้ด้านบนสุด (ข้อมูลปัจจุบัน ณ วันที่ 31 พฤษภาคม 2026):

ข้อกำหนดขีดจำกัด
ขนาดคำขอสูงสุด32 MB (แตกต่างกันตามแพลตฟอร์ม)
จำนวนหน้าสูงสุดต่อคำขอ600 (100 สำหรับโมเดลที่มีบริบท 200K โทเค็น)
รูปแบบPDF มาตรฐานที่ไม่มีรหัสผ่านหรือการเข้ารหัส

ข้อจำกัดทั้งสองข้อใช้กับเนื้อหาทั้งหมดใน request body รวมถึงเนื้อหาที่ส่งมาพร้อม PDF สำหรับ PDF ขนาดใหญ่ ให้ใช้ Files API และอ้างอิงไฟล์ด้วย `file_id` เพื่อให้ request body มีขนาดเล็ก

— Anthropic, https://platform.claude.com/docs/en/docs/build-with-claude/pdf-support

Claude.ai (แอปเว็บสำหรับผู้ใช้ทั่วไป) มีข้อจำกัดต่างออกไป: สูงสุด 500 MB ต่อไฟล์ และสูงสุด 20 ไฟล์ในแชต แต่การวิเคราะห์ภาพใช้ได้เฉพาะ PDF ที่มีไม่เกิน 100 หน้าเท่านั้น หากเกินกว่านั้น Claude จะเห็นเฉพาะข้อความ ไม่มีแผนภูมิหรือไดอะแกรม

วิธีส่ง PDF ผ่าน API มี 3 วิธี:

  1. ผ่าน URL - "source": {"type": "url", "url": "..."} - ง่ายที่สุดเมื่อเอกสารอยู่บนอินเทอร์เน็ต
  2. ในรูปแบบ Base64 - "source": {"type": "base64", "media_type": "application/pdf", "data": "..."} - สำหรับไฟล์ในเครื่อง
  3. ผ่าน Files API - "source": {"type": "file", "file_id": "file_abc123"} - สำหรับคำขอซ้ำ ต้องใช้ beta header anthropic-beta: files-api-2025-04-14

Files API เป็นวิธีหลักในการประหยัดเมื่อใช้ PDF ไฟล์เดียวกันในหลายแชต อัปโหลดครั้งเดียว รับ file_id แล้วใช้ในการโต้ตอบทั้งหมด เมื่อใช้ cache_control: ephemeral การเรียกซ้ำจะมีค่าใช้จ่าย 10% ของราคาปกติ

Anthropic ยังมีคำแนะนำอย่างเป็นทางการเกี่ยวกับการลดการใช้งาน:

PDF ที่มีเนื้อหาแน่น (มีข้อความขนาดเล็กจำนวนมาก ตารางซับซ้อน หรือกราฟิกจำนวนมาก) อาจใช้พื้นที่บริบทจนหมดก่อนถึงขีดจำกัดจำนวนหน้า ลองแบ่งเอกสารเป็นส่วน ๆ สำหรับไฟล์ขนาดใหญ่ ให้ลดความละเอียดของภาพที่ฝังอยู่ก่อนอัปโหลด

— Anthropic, https://platform.claude.com/docs/en/docs/build-with-claude/pdf-support

วิธีที่ 1: ตั้งค่า MarkItDown ใน 5 นาทีอย่างไร?

ประเด็นสำคัญ

MarkItDown เป็นเครื่องมือ Python จากทีม Microsoft AutoGen ที่แปลง PDF, DOCX, PPTX, XLSX, HTML, เสียง รูปภาพ และแม้แต่วิดีโอ YouTube ให้เป็น Markdown ที่สะอาด มีดาว 134 พันดวงบน GitHub ใช้สัญญาอนุญาต MIT และติดตั้งได้ด้วยคำสั่งเดียว: pip install 'markitdown[all]' ใช้งานก็ง่ายไม่แพ้กัน: markitdown document.pdf > document.md เป็นเครื่องมือที่ใช้งานได้หลากหลายที่สุดสำหรับแปลงไฟล์ก่อนใช้ Claude Code

MarkItDown เป็นโปรเจกต์ทางการของ Microsoft ซึ่งดูแลโดยทีม AutoGen บน GitHub มีดาว 134 พันดวงและ forks 9.2 พันรายการ (ณ สิ้นเดือนพฤษภาคม 2026) วัตถุประสงค์ระบุไว้โดยตรงใน README:

เครื่องมือ Python น้ำหนักเบาสำหรับแปลงไฟล์เป็น Markdown เพื่อใช้กับ LLM และไปป์ไลน์วิเคราะห์ข้อความ

— Microsoft, https://github.com/microsoft/markitdown

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

  • เอกสาร: PDF, DOCX, PPTX, XLSX
  • เว็บ: HTML, JSON, XML, CSV
  • สื่อ: เสียงพร้อมการถอดเสียง รูปภาพพร้อม EXIF และ OCR วิดีโอ YouTube (ผ่านคำบรรยาย)
  • ไฟล์เก็บถาวร: ZIP, EPub
  • อื่น ๆ: ไฟล์แนบทั้งหมดใน Outlook MSG

การติดตั้ง

ข้อกำหนด: Python 3.10+ (โดยปกติติดตั้งอยู่แล้วใน macOS; Windows ต้องติดตั้งแยกต่างหาก)

pip install 'markitdown[all]'

หากไม่ต้องการรูปแบบทั้งหมด สามารถติดตั้งเฉพาะบางรูปแบบได้:

pip install 'markitdown[pdf, docx, pptx]'

แปลงไฟล์เดียว

กรณีที่ง่ายที่สุด:

markitdown document.pdf > document.md

จากนั้น document.md จะปรากฏในโฟลเดอร์ปัจจุบัน นำเข้า Claude Code ด้วย @document.md หรือวางไว้ข้างโปรเจกต์ได้เลย

Python API

หากต้องการนำไปผสานรวมในสคริปต์:

from markitdown import MarkItDown

md = MarkItDown()
result = md.convert("research-paper.pdf")
print(result.text_content)

# บันทึกได้ทันที:
with open("research-paper.md", "w") as f:
    f.write(result.text_content)

สิ่งที่ MarkItDown ทำไม่ได้

  • OCR สำหรับ PDF ที่สแกนมา - ไม่ส่งคืนอะไรเลย ไฟล์สแกนต้องใช้ PyMuPDF4LLM หรือ Docling
  • เค้าโครงซับซ้อนที่มีหลายคอลัมน์ - ลำดับการอ่านอาจสับสน
  • URL ที่ฝังอยู่ใน PDF - ระบบไม่เก็บรักษาไว้

สำหรับ PDF ทั่วไป (รายงาน บทความ เอกสารประกอบ) MarkItDown เป็นตัวเลือกที่ดีที่สุด: เครื่องมืออเนกประสงค์ที่ติดตั้งได้ในหนึ่งนาทีและไม่ต้องมีความรู้ Python ประสิทธิภาพกับเอกสารที่มีข้อความซีริลลิกและไฟล์สแกนแสดงไว้ในการวัดผลในบทวิเคราะห์เรื่องการแปลง PDF เป็นข้อความสำหรับ AI

วิธีที่ 2: PyMuPDF4LLM มีอะไรให้ และเหมาะกว่าเมื่อใด?

ประเด็นสำคัญ

PyMuPDF4LLM เป็นโปรเจกต์ของ Artifex Software ที่สร้างบนเอนจิน MuPDF ภาษา C แบบ native เป็นตัวแปลง PDF ที่เร็วที่สุด (ไม่ต้องใช้ GPU); smart OCR จะใช้เฉพาะบริเวณที่อ่านไม่ออกและลดเวลาในการประมวลผลลง 50% เป็นเครื่องมือยอดนิยมเพียงตัวเดียวที่รักษา URL และรูปภาพที่ฝังอยู่ใน PDF ข้อเสียคือมีสัญญาอนุญาตคู่ AGPL v3 / Artifex เชิงพาณิชย์: สำหรับโปรเจกต์ SaaS การใช้ AGPL หมายความว่าคุณต้องเผยแพร่โค้ดของคุณ

MarkItDown มีรูปแบบให้เลือกหลากหลาย ส่วน PyMuPDF4LLM เชี่ยวชาญการประมวลผล PDF อย่างลึกซึ้ง

ส่วนขยาย PyMuPDF น้ำหนักเบาที่แปลง PDF เป็นข้อมูลมีโครงสร้างที่สะอาด โดยตั้งค่าเพียงเล็กน้อย

— Artifex Software, https://pymupdf.readthedocs.io/en/latest/pymupdf4llm/

เวอร์ชัน ณ วันที่ 31 พฤษภาคม 2026 คือ 1.27.2.3 (เผยแพร่เมื่อ 24 เมษายน 2026)

สิ่งที่รวมอยู่

  • หน้าหลายคอลัมน์พร้อมลำดับการอ่านที่ถูกต้อง
  • แปลงตารางเป็น Markdown แบบ GitHub-flavored
  • ลบส่วนหัวและส่วนท้ายโดยอัตโนมัติ
  • แยกรูปภาพพร้อมลิงก์แบบ relative ไปยังโฟลเดอร์แยก
  • Smart OCR: ใช้เฉพาะบริเวณที่อ่านไม่ออก ช่วยประหยัดเวลาในการประมวลผล ~50%
  • เอนจิน C แบบ native, ไม่ต้องใช้ GPU

การติดตั้ง

pip install pymupdf4llm

การใช้งาน

import pymupdf4llm

# การใช้งานพื้นฐาน - แปลงเป็น Markdown โดยตรง:
md_text = pymupdf4llm.to_markdown("document.pdf")

# บันทึก:
with open("document.md", "w") as f:
    f.write(md_text)

ในบรรทัดเดียวตามที่สัญญาไว้:

python3 -c "import pymupdf4llm; \
  open('document.md','w').write(pymupdf4llm.to_markdown('document.pdf'))"

ควรเลือก PyMuPDF4LLM แทน MarkItDown เมื่อใด

  • เมื่อ PDF มีลิงก์จำนวนมากที่ต้องการเก็บรักษาไว้ (MarkItDown ทำลิงก์หาย)
  • เมื่อเอกสารเป็นไฟล์สแกนและต้องใช้ OCR
  • เมื่อต้องการความเร็วในการประมวลผลไฟล์หลายพันไฟล์ในเครื่อง—เอนจิน C แบบ native เร็กว่า wrapper ของ Python
  • เมื่อต้องการภาพจาก PDF ในโฟลเดอร์แยกเพื่อนำไปประมวลผลต่อ

รายละเอียดสัญญาอนุญาต (สำคัญสำหรับธุรกิจ)

PyMuPDF4LLM มีสัญญาอนุญาตคู่: AGPL v3 หรือ Artifex เชิงพาณิชย์

ความหมายของ AGPL: หากใช้ไลบรารีใน SaaS สาธารณะ คุณต้องเผยแพร่ซอร์สโค้ดทั้งหมดของบริการภายใต้ AGPL เดียวกัน สำหรับการใช้งานภายใน (สคริปต์ของคุณบนแล็ปท็อป) ไม่มีข้อจำกัด

หากพัฒนาเชิงพาณิชย์โดยไม่เปิดเผยโค้ด ให้ซื้อไลเซนส์จาก Artifex (artifex.com) ไม่มีการเผยแพร่ราคา ให้สอบถามจากฝ่ายขาย

หากกำลังสร้างผลิตภัณฑ์ให้ลูกค้า ให้ตรวจสอบสัญญาอนุญาตตั้งแต่เริ่มต้น MarkItDown (MIT) และ Docling (MIT) ปลอดภัยกว่าสำหรับ SaaS

วิธีที่ 3: เชื่อมต่อเซิร์ฟเวอร์ MarkItDown MCP กับ Claude Code อย่างไร?

ประเด็นสำคัญ

เซิร์ฟเวอร์ MarkItDown MCP คือ MarkItDown ตัวเดิมที่ห่อหุ้มด้วยโปรโตคอล MCP ทำให้ Claude Code แปลง PDF ได้ทันทีโดยไม่ต้องโหลดไฟล์ต้นฉบับเข้าไปในบริบท เชื่อมต่อด้วยคำสั่งเดียวผ่าน uv โดยกำหนดเวอร์ชันไว้แน่นอน: markitdown-mcp@0.0.1a7 เครื่องมือที่ Claude ได้รับคือ convert_to_markdown(uri) ต้นทุนขณะไม่ใช้งานอยู่ที่ ~110 โทเค็นสำหรับคำอธิบาย skill และเป็นศูนย์เมื่อไม่จำเป็นต้องใช้

MarkItDown ในโหมด CLI หมายถึง “ฉันแปลงไฟล์ด้วยตนเองล่วงหน้า” ส่วนเซิร์ฟเวอร์ MCP หมายถึง “Claude Code ตัดสินใจเองว่าเมื่อใดจะต้องแปลง”

การติดตั้ง

ต้องมีตัวจัดการแพ็กเกจ uv ไม่จำเป็นต้องติดตั้งเซิร์ฟเวอร์แยกต่างหาก เพราะ uv จะดาวน์โหลดให้เมื่อเรียกใช้ครั้งแรก

การกำหนดค่าใน Claude Code

คำสั่งเดียวเชื่อมต่อเซิร์ฟเวอร์กับทุกโปรเจกต์ของคุณ โดยกำหนดเวอร์ชันไว้แน่นอน:

claude mcp add --scope user --env 'ORT_DISABLE_TELEMETRY=1' --env 'UV_PYTHON=3.12' --transport stdio markitdown -- uvx markitdown-mcp@0.0.1a7
claude mcp list

รายการ markitdown ควรแสดงข้อความ “Connected.” เมื่อเปิดใช้ครั้งแรกจะดาวน์โหลดประมาณ 70 แพ็กเกจและใช้เวลาสูงสุดหนึ่งนาที หลังจากนั้นเซิร์ฟเวอร์จะเริ่มทำงานภายในหนึ่งหรือสองวินาที

เหตุผลที่คำสั่งต้องใช้ตัวแปรทั้งสองมีดังนี้ ORT_DISABLE_TELEMETRY=1 ปิดสถิติที่เอนจิน onnxruntime ภายในเซิร์ฟเวอร์ส่งไปยัง Microsoft โดยค่าเริ่มต้นบน Mac และ Linux ส่วน UV_PYTHON=3.12 ใช้ Python 3.12 สำหรับเซิร์ฟเวอร์ ซึ่งมีแพ็กเกจที่สร้างไว้ล่วงหน้าสำหรับ Windows, Linux และ Mac ที่ใช้ Apple Silicon บน Mac ที่ใช้ Intel และ macOS 13 หรือต่ำกว่า เซิร์ฟเวอร์จะติดตั้งภายใต้ Python 3.14 ไม่ได้ มีข้อควรระวังสำหรับ Intel และ 3.12: uv จะสร้างไลบรารี cryptography จากซอร์สโค้ด เพราะไม่มีแพ็กเกจ Intel ที่สร้างไว้ล่วงหน้าตั้งแต่เดือนมิถุนายน 2026 การติดตั้งใช้เวลานานขึ้นและอาจล้มเหลว หากไม่มี Python 3.12 uv จะดาวน์โหลดให้

เซิร์ฟเวอร์ทำงานบนคอมพิวเตอร์ของคุณโดยตรงและเปิดไฟล์ใดก็ได้ที่คุณมีสิทธิ์เข้าถึง หากเปิด Claude Code อยู่ ให้เริ่มโปรแกรมใหม่ แล้ว markitdown จะปรากฏในรายการเซิร์ฟเวอร์ MCP

วิธีใช้งาน

ใน Claude Code พูดได้เลยว่า:

แปลง /Users/your-user/Documents/report.pdf เป็น Markdown แล้ววิเคราะห์ประเด็นสำคัญ

Claude เรียก convert_to_markdown(uri) เอง รับ Markdown แล้วทำงานกับข้อมูลนั้น โดยไม่ได้โหลด PDF เข้าไปในบริบทเลย

URI ที่รองรับ

  • file:// - ไฟล์ในเครื่อง
  • http://, https:// - เอกสารออนไลน์
  • data: - ข้อมูลแบบ inline (Base64)

ความปลอดภัย

จาก README อย่างเป็นทางการ:

เซิร์ฟเวอร์ไม่รองรับการกำหนดสิทธิ์ และทำงานด้วยสิทธิ์ของผู้ใช้ที่เปิดใช้งาน

— Microsoft, https://github.com/microsoft/markitdown/tree/main/packages/markitdown-mcp

โดยค่าเริ่มต้น เซิร์ฟเวอร์ bind กับ localhost หากใช้งานผ่าน HTTP/SSE (ตัวเลือก --http --host 127.0.0.1 --port 3001) อย่าเปิดพอร์ตให้เข้าถึงจากภายนอกโดยไม่มี reverse proxy ที่ผ่านการยืนยันตัวตน

ควรเลือกวิธีใดสำหรับงานของคุณ?

ประเด็นสำคัญ

MarkItDown เป็นเครื่องมือครอบจักรวาล หากคุณทำงานกับหลายรูปแบบ (PDF + DOCX + PPTX + YouTube) และต้องการคำสั่ง CLI ที่รวดเร็ว PyMuPDF4LLM เป็นผู้เชี่ยวชาญด้าน PDF: เร็วกว่า มี OCR และเก็บรักษาลิงก์ แต่มีข้อควรระวังเรื่อง AGPL สำหรับ SaaS ส่วน Docling เหมาะสำหรับระบบ production และจัดการตารางกับสูตรได้ดีที่สุด Marker เหมาะสำหรับเอกสารวิทยาศาสตร์ที่มีคณิตศาสตร์ ส่วนเซิร์ฟเวอร์ MCP เหมาะกับผู้ที่ไม่อยากคิดเรื่องการแปลงและต้องการให้ Claude Code ตัดสินใจเอง

ตารางเปรียบเทียบฉบับเต็ม:

เครื่องมือดาวบน GitHubเหมาะสำหรับความเร็วสัญญาอนุญาต
MarkItDown (Microsoft)134kPDF + DOCX + PPTX + YouTube + เสียงปานกลางMIT
PyMuPDF4LLM (Artifex)-PDF แบบ native, OCR, URL ที่ฝังอยู่เร็วที่สุด (ไม่ใช้ GPU)AGPL v3 / เชิงพาณิชย์
Docling (IBM Research)60.7kRAG สำหรับ production, ตาราง, สูตรปานกลางMIT
Marker (datalab.to)35.6kPDF วิทยาศาสตร์, arXiv, สูตรสูง (ใช้ GPU)GPL-3.0 + Open Rail-M
MinerU-เอกสาร CJK (จีน/ญี่ปุ่น)สูงApache-2.0

Marker แสดงตัวเลขความแม่นยำที่น่าประทับใจในการทดสอบเกณฑ์มาตรฐาน:

0.18 วินาทีต่อหน้าบน GPU H100 (122 หน้าต่อวินาที) ความแม่นยำ 95.67% เทียบกับ Llamaparse (84.24%) และ Mathpix (86.43%) สำหรับเอกสารวิทยาศาสตร์ ความแม่นยำ 96.67%

— datalab.to, https://github.com/datalab-to/marker

แต่ Marker ต้องใช้ GPU เพื่อให้ได้ความเร็วที่ดี และมาพร้อมโมเดลแมชชีนเลิร์นนิง สำหรับงานส่วนใหญ่ (PDF ข้อความทั่วไป) PyMuPDF4LLM หรือ MarkItDown ก็ทำงานได้ภายในไม่กี่วินาทีโดยไม่ใช้ GPU

กฎง่าย ๆ ในการเลือก

  1. PDF หนึ่งหรือสองไฟล์ ต้องการผลลัพธ์เร็ว - MarkItDown CLI
  2. PDF หลายสิบไฟล์ ต้องการระบบอัตโนมัติ - เซิร์ฟเวอร์ MarkItDown MCP หรือ PyMuPDF4LLM ในสคริปต์
  3. PDF ที่มีลิงก์และภาพ ซึ่งต้องรักษาโครงสร้างไว้ - PyMuPDF4LLM
  4. RAG สำหรับธุรกิจระดับ production ที่ต้องการความเสถียรของตาราง - Docling
  5. เอกสารวิทยาศาสตร์ที่มีสูตร - Marker
  6. ไม่อยากคิดเรื่องนี้ ให้ Claude แปลงให้ - เซิร์ฟเวอร์ MarkItDown MCP

เขียนสคริปต์พร้อมใช้เพื่อแปลงโฟลเดอร์เอกสารโดยอัตโนมัติอย่างไร?

ประเด็นสำคัญ

รูปแบบที่สะดวกที่สุดคือสคริปต์ bash ที่ไล่ดูโฟลเดอร์โปรเจกต์ แปลงไฟล์ PDF, DOCX และ PPTX ทั้งหมดเป็น Markdown แล้วใส่ไว้ในโฟลเดอร์ย่อย _md/ ตั้งค่าเพียงครั้งเดียว แล้วโฟลเดอร์เอกสารใหม่ใด ๆ ก็จะ “อ่านได้โดย Claude” ในครั้งเดียว จากนั้นนำ _md/ เข้า Claude Code ด้วย @_md/ แล้วทำงานกับข้อความที่บีบอัดไว้

ตัวอย่างในทางปฏิบัติ: สมมติว่าคุณมีรายงาน PDF และ PPTX จากลูกค้า 40 ฉบับในโฟลเดอร์เดียว ทั้งใบแจ้งยอดนายหน้า สัญญา และงานนำเสนอ การอัปโหลดโฟลเดอร์ไปยัง Claude โดยตรงไม่มีประโยชน์ เพราะหน้าต่างบริบทจะเต็มไปด้วยข้อมูลก่อนที่จะได้รับคำตอบแรก เรียกใช้สคริปต์ด้านล่างกับโฟลเดอร์ทั้งหมดในครั้งเดียว แล้วทำงานต่อด้วยไฟล์ .md ขนาดเบาแทน PDF ขนาดใหญ่

บันทึกสคริปต์นี้เป็น scripts/docs-to-md.sh ไว้ในโฟลเดอร์รากของโปรเจกต์:

#!/bin/bash
# docs-to-md.sh - แปลงเอกสารทั้งหมดในโฟลเดอร์เป็น Markdown โดยใช้ MarkItDown
# วิธีใช้: bash docs-to-md.sh ./documents

set -e

INPUT_DIR="${1:-./documents}"
OUTPUT_DIR="${INPUT_DIR}/_md"

mkdir -p "$OUTPUT_DIR"

echo "Scanning $INPUT_DIR..."

for file in "$INPUT_DIR"/*.{pdf,docx,pptx,xlsx}; do
  [ -f "$file" ] || continue

  basename=$(basename "$file")
  name="${basename%.*}"
  output="$OUTPUT_DIR/${name}.md"

  if [ -f "$output" ] && [ "$output" -nt "$file" ]; then
    echo "Skipping $basename (already converted)"
    continue
  fi

  echo "Converting $basename..."
  markitdown "$file" > "$output"
done

echo "Done. Results are in $OUTPUT_DIR"

ตั้งค่าให้สคริปต์เรียกใช้งานได้:

chmod +x scripts/docs-to-md.sh

เรียกใช้:

bash scripts/docs-to-md.sh ./reports

หลังจากเรียกใช้ ./reports/_md/ จะมีไฟล์ .md ของเอกสารทั้งหมด นำเข้า Claude Code ด้วย @reports/_md/ แล้วทำงานกับข้อความที่บีบอัดไว้แทน PDF

สคริปต์จะข้ามไฟล์ที่แปลงแล้วโดยอัตโนมัติ (หากไฟล์ .md ใหม่กว่าไฟล์ต้นฉบับ) การเรียกใช้อีกครั้งจึงมีต้นทุนต่ำและไม่ต้องคำนวณทุกอย่างซ้ำ

การแปลงแบบ idempotent และเพิ่มเฉพาะส่วนที่เปลี่ยน

หากต้องการให้สคริปต์ตรวจจับ PDF ที่เปลี่ยนแปลง (บันทึกใหม่ด้วยชื่อเดิม) ให้เพิ่มการตรวจสอบ content hash:

hash=$(shasum -a 256 "$file" | cut -d' ' -f1)
hash_file="$OUTPUT_DIR/.${name}.sha256"

if [ -f "$hash_file" ] && [ "$(cat "$hash_file")" = "$hash" ]; then
  echo "Skipping $basename (hash matches)"
  continue
fi

markitdown "$file" > "$output"
echo "$hash" > "$hash_file"

เวอร์ชันนี้จะแปลงไฟล์ใหม่ก็ต่อเมื่อเนื้อหาของไฟล์เปลี่ยนไป

เมื่อใด PDF ใน Claude ยังดีกว่า Markdown?

ประเด็นสำคัญ

การแปลงเป็น Markdown ทำให้สูญเสีย 3 อย่าง: องค์ประกอบภาพ (ไดอะแกรม แผนภูมิ พิมพ์เขียว) ตารางซับซ้อนที่มีเซลล์ผสานและคำบรรยาย และรูปแบบเอกสารครบถ้วนในฐานะสิ่งที่ใช้อ้างอิง (เช่น สัญญาที่คุณต้องอ้างอิงตามหน้า) หากสิ่งเหล่านี้สำคัญต่องาน ให้เก็บ PDF ไว้ เปิดการวิเคราะห์ภาพ และยอมรับต้นทุนด้านภาพอย่างรู้ตัว

มี 3 กรณีที่การแปลงเป็น Markdown ทำได้ไม่ดีพอ:

1. วิเคราะห์ภาพของไดอะแกรมและแผนภูมิ

หาก Claude ต้อง “อ่าน” แผนภูมิ เช่น เส้นราคาหรือไดอะแกรมกระบวนการหรือสถาปัตยกรรม ข้อมูลนั้นจะไม่มีอยู่ใน Markdown โดย Markdown จะเก็บไว้เฉพาะคำบรรยายภาพ แต่ตัวภาพจะหายไป

วิธีแก้: อัปโหลด PDF และเปิดโหมดภาพอย่างชัดเจน ใน Claude API แฟล็กนี้ทำงานโดยอัตโนมัติ ส่วน AWS Bedrock ต้องใช้แฟล็ก citations

Claude วิเคราะห์ทั้งข้อความและภาพเพื่อทำความเข้าใจเอกสารได้ดียิ่งขึ้น

— Anthropic, https://platform.claude.com/docs/en/docs/build-with-claude/pdf-support

2. ตารางซับซ้อนที่มีเซลล์ผสาน

ตาราง Markdown เป็นรูปแบบแบน หาก PDF มีตารางที่มีเซลล์ผสาน หัวตารางหลายระดับ หรือตารางย่อยซ้อนกัน ตัวแปลงอาจทำให้ตารางแบนราบหรือทำความสัมพันธ์ระหว่างข้อมูลหายไป

วิธีแก้: ใช้ PDF โดยตรง ใช้ Docling (จัดการตารางซับซ้อนได้ดีที่สุด) หรือจัดรูปแบบเองหลังแปลง

3. เอกสารที่ต้องอ้างอิงตามหน้า

สำหรับเอกสารทางกฎหมาย สัญญา และรายงานการประชุม การอ้างอิงว่า “หน้า 7 ย่อหน้าที่ 3” เป็นเรื่องสำคัญ หมายเลขหน้าจะหายไปใน Markdown

วิธีแก้: PDF + Files API + prompt caching อัปโหลดครั้งเดียวแล้วอ้างอิงด้วย file_id; Claude จะเห็นเลขหน้าและอ้างอิงหน้าเฉพาะได้

เอกสารสั้น

หาก PDF มีไม่ถึง 2 หน้าและใช้เพียงครั้งเดียว การแปลงก็ไม่คุ้มค่า PDF ใช้ 5,000 โทเค็น เทียบกับ Markdown 800 โทเค็น ประหยัดไม่มากพอที่จะคุ้มกับการติดตั้ง MarkItDown

จุดคุ้มทุนอยู่ที่ประมาณ 5+ หน้าหรือใช้เอกสารเดิม 2+ ครั้ง หากต่ำกว่านั้นให้อัปโหลด PDF โดยตรง หากเกินกว่านั้นให้แปลงไฟล์

5 ข้อผิดพลาดที่พบบ่อยที่สุดเมื่อใช้ PDF ใน Claude มีอะไรบ้าง?

ประเด็นสำคัญ

ข้อผิดพลาดหลัก ได้แก่ อัปโหลด PDF ไฟล์เดิมซ้ำในแชตต่าง ๆ แทนที่จะแปลงครั้งเดียว ไม่ใช้ prompt caching สำหรับคำขอซ้ำ ใช้ภาพหน้าจอแทนข้อความ ไม่ทำ OCR ให้ PDF ที่สแกนมา และมองข้ามข้อจำกัด 100 หน้าสำหรับโมเดลที่มีบริบท 200K ความผิดพลาดแต่ละข้อทำให้เสียโทเค็นหลายหมื่นโดยไม่มีเหตุผล

1. อัปโหลด PDF ไฟล์เดิมซ้ำในแชตใหม่ทุกครั้ง

Claude Pro จำกัดจำนวนข้อความในช่วงเวลา 5 ชั่วโมง รายงาน 50 หน้าเพียงฉบับเดียวอาจใช้โควตาจนหมดก่อนถามคำถามที่สอง

มีหลักการง่าย ๆ สำหรับเรื่องนี้: หนึ่งงาน—หนึ่งแชต เมื่อ AI เริ่มใช้โทเค็นในปริมาณมหาศาล แสดงว่าคุณกำลังยัดทุกอย่างไว้ในแชตเดียวและนำ PDF กลับเข้ามาซ้ำแล้วซ้ำเล่า ให้แยกงานย่อยแต่ละงานไว้ในหน้าต่างของตัวเอง แปลงเอกสารเป็น Markdown ครั้งเดียว แล้วเพิ่มไฟล์ .md ในทุกหน้าต่างใหม่พร้อมกับโปรเจกต์ วงกลมแสดงการใช้หน้าต่างบริบทจะไม่เปลี่ยนเป็นสีเหลือง

วิธีแก้: แปลงเป็น Markdown เพียงครั้งเดียว หรือใช้ Files API ร่วมกับ file_id และ prompt caching

2. ใช้ภาพหน้าจอแทนข้อความ

ตัวอย่างทั่วไป: มีคนต้องการแสดงโค้ดหรือตารางให้ Claude ดู จึงจับภาพหน้าจอทั้งหมดขนาด 1920×1080 แล้วสงสัยว่าทำไมโควตาจึงหมดหลังจาก 5 คำขอ

ภาพหน้าจอขนาด 1000×1000 พิกเซลใช้ ~1,300 โทเค็น ข้อความเดียวกันที่คัดลอกด้วยมือใช้ 50–100 โทเค็น ต่างกัน 13–26 เท่า

วิธีแก้: ครอบภาพหน้าจอให้แคบ (เฉพาะส่วนที่สำคัญ) หรือยิ่งดีกว่านั้น ให้คัดลอกข้อความโดยตรง

3. PDF ที่สแกนมาโดยไม่มี OCR

MarkItDown ทำ OCR ไม่ได้ หากแปลงไฟล์สแกน ผลลัพธ์จะเป็นไฟล์ .md ว่างเปล่า (หรือมีข้อความมั่ว 3 บรรทัด)

วิธีแก้: สำหรับไฟล์สแกน ให้ใช้ PyMuPDF4LLM (พร้อม smart OCR ในตัว) หรือ Docling

4. มองข้ามข้อจำกัด 100 หน้า

เอกสารของ Anthropic ระบุว่าจำกัด 600 หน้าต่อคำขอ แต่ในทางปฏิบัติ ข้อจำกัดของโมเดลที่มีบริบท 200K (Sonnet 4.x, Opus 4.x) คือ 100 หน้า ข้อจำกัด 600 หน้ามีไว้สำหรับโมเดลรุ่นเก่าหรือระดับบริการพิเศษ

หากอัปโหลดรายงาน 150 หน้าไปยัง Sonnet 4.6 คุณจะได้รับข้อผิดพลาด หรือที่แย่กว่านั้น Claude อาจประมวลผลเพียง 100 หน้าแรกแล้วทำเหมือนว่าอ่านเอกสารทั้งหมดแล้ว

วิธีแก้: แบ่ง PDF ยาวเป็นส่วน ๆ ก่อนอัปโหลด หรือแปลงเป็น Markdown ซึ่งไม่มีข้อจำกัดเรื่องหน้า มีเพียงข้อจำกัดเรื่องโทเค็น

5. ไม่ใช้ prompt caching สำหรับคำขอซ้ำ

หากใช้เอกสารเดียวกันผ่าน API ให้ครอบเอกสารด้วย cache_control: ephemeral การเรียกซ้ำภายใน 5 นาทีมีค่าใช้จ่าย 10% ของราคาเริ่มต้น คำขอแรกมีค่าใช้จ่ายสูงกว่า ส่วนที่เหลือได้ส่วนลด 90%

วิธีแก้: เปิดใช้ prompt caching เป็นค่าเริ่มต้นกับสิ่งที่คุณอัปโหลดมากกว่าหนึ่งครั้ง

ต่อไป: context engineering

ประเด็นสำคัญ

การแปลง PDF เป็น Markdown เป็นเทคนิคหนึ่งของ context engineering ซึ่งเป็นทักษะใหม่ในการทำงานกับ AI prompt คือคำถาม ส่วน context คือทุกสิ่งที่ Claude เห็นก่อนและรอบ ๆ คำถาม ได้แก่ system prompt, CLAUDE.md, ไฟล์ต่าง ๆ, เซิร์ฟเวอร์ MCP และประวัติเซสชัน ยิ่งบริบทสะอาดมากเท่าใด คำตอบก็ยิ่งแม่นยำและมีต้นทุนต่ำลง อ่านบทวิเคราะห์ฉบับเต็มได้ในคู่มือ “Context Engineering in 2026”

การแปลง PDF เป็น Markdown เป็นวิธีหนึ่งในการประหยัดโทเค็น แต่เพียงอย่างเดียวไม่ได้ทำให้คำตอบของ Claude แม่นยำขึ้น ความแม่นยำมาจาก context engineering—ศาสตร์ที่ว่าด้วยการจัดสิ่งที่ใส่ไว้ในบริบทของโมเดลก่อนถามคำถาม

หาก CLAUDE.md ของคุณมี 800 บรรทัด โปรเจกต์มีเซิร์ฟเวอร์ MCP ที่ไม่จำเป็น 10 ตัว และคุณนำ PDF 100 หน้าเข้ามา การแปลงเป็น Markdown จะป้องกันการรั่วไหลได้หนึ่งทาง แต่ยังเหลืออีกสามทาง นี่คือเหตุผลที่คู่มือเหล่านี้ครอบคลุมเรื่องต่อไปนี้:

สำรวจ Ailoot ต่อได้ที่ ailoot.ai

รายละเอียดเพิ่มเติม

คำถามที่พบบ่อย

ตัวอย่าง 15 หน้าในสี่แชตใช้ Markdown กี่โทเค็น?

ตามสมมติฐาน 300 โทเค็นต่อหน้าที่แปลง รวมเป็น 15 × 300 × 4 = 18,000 โทเค็นอินพุต เป็นค่าประมาณประกอบตัวอย่าง ต้องนับเอกสารที่แปลงจริงของคุณ

แปลงเป็นข้อความพอสำหรับ PDF ทุกชนิดหรือไม่?

ไม่พอ เทียบ Markdown กับ PDF โดยเฉพาะตาราง ลำดับหน้า และเนื้อหาที่พึ่งภาพ ควรเทียบโทเค็นหลังยืนยันว่าข้อมูลที่งานต้องการรอดจากการแปลง

บทความทั้งหมด