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 กว่า
ความคิดเห็น
กำลังโหลดความคิดเห็น...