Tool: read_image — OCR ล้วนๆ ไม่มี vision model เพราะโมเดล 35B เป็น text-only

ภาพประกอบ: Tool: read_image — OCR ล้วนๆ ไม่มี vision model เพราะโมเดล 35B เป็น text-only

read_image ให้ agent ตรวจดูภาพใน workspace แล้วสรุปสิ่งที่เห็น เช่น โครงร่างหน้าจอ แผนภาพ หรือข้อผิดพลาดจากภาพหน้าจอ โดยไม่ต้องพึ่งคำบรรยายจากผู้ใช้เพียงอย่างเดียว

Tool นี้คืออะไร

ดึงข้อความจากภาพผ่าน Apple Vision OCR (ความละเอียดเต็ม รองรับทั้งไทยและอังกฤษ) — รับ source ได้ 3 แบบ: path ไฟล์ในเครื่อง, URL ภาพจากเว็บ (https://), หรือคำว่า "screen" (แคปหน้าจอปัจจุบันแล้ว OCR ทันที)

จุดต่างสำคัญจาก AGENT LITE: ไม่มีการคิวภาพให้โมเดลดูเลย

นี่คือความต่างที่ชัดเจนที่สุดเมื่อเทียบกับ read_image ของ AGENT LITE — LITE ใช้โมเดล Qwen3.5-2B-OptiQ-4bit ที่เป็น VLM (Vision-Language Model) ในตัว จึงคิวภาพไว้ให้โมเดลดูจริงในรอบถัดไป (ทั้ง OCR และมองเห็นภาพ) ส่วน LOCAL AGENT TH ใช้ Qwen3-35B ที่เป็นโมเดลข้อความล้วน (text-only) ไม่มีความสามารถมองเห็นภาพในตัวเลยread_image ของ TH จึงทำได้แค่ OCR สกัดข้อความออกมา ไม่สามารถอธิบายเนื้อหาภาพที่ไม่ใช่ตัวอักษรได้ (เช่นบรรยายภาพถ่าย, วิเคราะห์ไดอะแกรม, อ่านกราฟที่ไม่มีตัวเลขกำกับ) — docstring บอกตรงๆ ว่า “this tool does not describe non-text image content”

จุดดีของการเลือกทางนี้: ไม่ต้องรัน vision-server แยกเลย ต้องการแค่ LLM ตัวเดียวที่รันอยู่แล้วก็พอ — ประหยัดทรัพยากรกว่าการต้องรันทั้งโมเดลข้อความและโมเดล vision พร้อมกัน แลกกับการไม่มีความสามารถ “มองเห็น” ภาพจริงๆ

รองรับแคปหน้าจอ (screen) — ฟีเจอร์ที่ AGENT LITE ไม่มี

พิมพ์ source="screen" แล้ว tool จะเรียก screencapture -x -m ของ macOS แคปหน้าจอปัจจุบันทันที แล้ว OCR ข้อความที่เห็นบนจอ ณ ขณะนั้น — ถ้าไม่มีสิทธิ์ Screen Recording tool จะบอกวิธีเปิดสิทธิ์ให้ตรงๆ (System Settings → Privacy & Security → Screen Recording) แทนที่จะ error เฉยๆ โดยไม่บอกวิธีแก้

รองรับ URL ภาพจากเว็บโดยตรง

ถ้า source เป็น URL ที่ขึ้นต้นด้วย http:///https:// ระบบดาวน์โหลดภาพมาไว้ในไฟล์ชั่วคราวก่อน OCR แล้วลบไฟล์ทิ้งทันทีหลังใช้เสร็จ (ใน finally block รับประกันว่าลบแม้เกิด exception ระหว่างทาง) — ทำให้อ่านข้อความจากภาพที่แนบมากับผลค้นเว็บได้โดยไม่ต้องดาวน์โหลดเก็บไว้ถาวร

ตัดผลลัพธ์ที่ 4,000 ตัวอักษร

ต่างจาก read_file ที่มี pipeline sample ซับซ้อน read_image ตัดผลลัพธ์แบบตรงไปตรงมาที่ 4,000 ตัวอักษร (_DEEP_MAX_CHARS) เพราะข้อความที่ OCR ได้จากภาพหนึ่งภาพมักไม่ยาวมากอยู่แล้ว (ต่างจากเอกสารทั้งไฟล์) การตัดแบบง่ายจึงเพียงพอโดยไม่ต้องมี sampling logic ซับซ้อน

ถ้าไม่พบข้อความ บอกตรงๆ ไม่ใช่พยายามเดา

ถ้า OCR ไม่พบข้อความในภาพเลย (เช่นภาพถ่ายทิวทัศน์, ไดอะแกรมไม่มีตัวหนังสือ) tool คืน "[OCR] no text detected" ตรงๆ — ไม่พยายามให้โมเดลเดาเนื้อหาภาพจากชื่อไฟล์หรือ context อื่น เพราะจะเป็นการให้ข้อมูลเท็จ ความซื่อสัตย์ของผลลัพธ์สำคัญกว่าการพยายามตอบให้ได้ทุกกรณี

ทำไมเรื่องนี้ถึงสำคัญ

การเปรียบเทียบ read_image ของ LITE กับ TH แสดงให้เห็นว่าความสามารถของ tool ถูกกำหนดโดยความสามารถจริงของโมเดลที่อยู่เบื้องหลัง ไม่ใช่แค่ชื่อ tool ที่เหมือนกัน — โมเดล VLM ในตัวของ LITE เปิดทางให้ tool ทำได้ทั้ง OCR และ “มองเห็น” ภาพจริง ในขณะที่โมเดลข้อความล้วนของ TH จำกัด tool ให้ทำได้แค่ OCR แต่ TH ก็ชดเชยด้วยความสามารถอื่นที่ LITE ไม่มี (แคปหน้าจอ, ดาวน์โหลด URL ภาพ) ตามความเหมาะสมกับ use case ของ agent ที่ทำงานบนเครื่อง Desktop จริง

อ่านเพิ่มเติม

ความคิดเห็น

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