PDF to Text — แปลง PDF เป็นข้อความแบบ page-by-page โดยไม่ยัดทั้งเล่มขึ้น RAM

ภาพประกอบ: PDF to Text — แปลง PDF เป็นข้อความแบบ page-by-page โดยไม่ยัดทั้งเล่มขึ้น RAM

Agent Lite มี PDF to Text เป็น workflow แยกจาก read_file เพราะสองงานนี้มีเป้าหมายต่างกัน:

  • read_file ดึงข้อความบางส่วนเข้า context เพื่อให้ agent ตอบคำถาม
  • PDF to Text สร้างไฟล์ .txt จริงสำหรับผู้ใช้ โดยพยายามรักษาลำดับหน้าและข้อความให้ครบที่สุดภายใต้ทรัพยากรของเครื่อง

Pipeline

PDF
  ↓ ทีละ physical page
embedded text มี? ── yes → clean text
  │ no
  ▼
rasterize หน้านั้น → Apple Vision OCR
  ↓
conservative table reconstruction
  ↓
write page state ลง SQLite ทันที
  ↓
optional Thai OCR cleanup ด้วย local Lite model
  ↓
stream final pages ตามลำดับ → workspect/*.txt

ไม่โหลดเอกสารทั้งเล่มเป็น string ก้อนเดียว

ระบบอ่านทีละหน้าและ persist page result ลง SQLite staging ทันที จึงไม่ต้องถือข้อความทั้ง PDF ไว้ใน RAM พร้อมกัน

เหมาะกับเครื่อง RAM 8GB และ PDF ยาวกว่าวิธีที่ extract ทั้งเล่มก่อนค่อย process

Native text มาก่อน OCR

ถ้าหน้ามี text layer อยู่แล้ว ระบบใช้ข้อความนั้นโดยตรง ไม่ rasterize/OCR ซ้ำโดยไม่จำเป็น

เฉพาะ image-only page จึงใช้ Apple Vision OCR

วิธีนี้ทั้งเร็วกว่าและลดโอกาสทำข้อความที่อ่านได้อยู่แล้วให้แย่ลงเพราะ OCR รอบใหม่

Table reconstruction แบบ conservative

สำหรับ OCR boxes ที่มีโครงสร้างแถว/คอลัมน์ชัด ระบบพยายามประกอบกลับเป็น Markdown-like table

แต่ถ้า evidence ไม่พอ เช่นดูเหมือนย่อหน้าวางข้างกัน ระบบจะไม่ฝืนสร้างตาราง เพราะ table ที่ “ดูสวยแต่ผิดโครงสร้าง” แย่กว่าข้อความธรรมดาที่ซื่อสัตย์กับ OCR

Optional local-model cleanup

Thai OCR prose สามารถให้ local Lite model ช่วย clean ได้แบบ no-think และรวมหลายหน้าต่อ request ตาม budget

แต่ native PDF text และ OCR table ไม่ต้องผ่าน LLM โดยอัตโนมัติ

ถ้า model ใช้ไม่ได้ pipeline หลักยังสร้าง output จาก native text/Apple Vision OCR ได้

SQLite เป็น staging/cache ไม่ใช่ output สุดท้าย

SQLite เก็บ job/page state เพื่อให้ pipeline ทำงานแบบ bounded และ recover/cleanup ได้ แต่ไฟล์ที่ผู้ใช้ต้องการคือ .txt ซึ่งเขียนใต้ workspect/

old staging rows มีการ age out ตาม policy ไม่ได้เก็บเป็นคลังถาวรแทนไฟล์ output

ใช้เมื่อไร

เหมาะเมื่อผู้ใช้ต้องการ:

  • แปลง PDF ทั้งเล่มเป็น text file
  • OCR PDF สแกนหลายหน้า
  • เอาข้อความออกไปใช้กับระบบอื่นต่อ
  • เก็บ page separators ไว้เพื่อย้อนตำแหน่ง

ถ้าเพียงอยากถาม “เอกสารนี้พูดถึงอะไร” ให้ใช้ Knowledge Base หรือ read_file จะประหยัด context กว่า

อ่านต่อ

ความคิดเห็น

กำลังโหลดความคิดเห็น...