สรุป PDF ไทยด้วย PHP + Ollama: ไม่ต้องส่ง Cloud - ทำเองได้!

สรุปเอกสาร PDF ภาษาไทยด้วย PHP + Ollama — ไม่ต้องส่งข้อมูลออก Cloud

ผมเคยเจอสถานการณ์ที่ทีมงานต้องจัดการเอกสาร PDF จำนวนมหาศาลในบริษัทเรา – เป็นเอกสารสัญญา, รายงานการประชุม, และเอกสารทางกฎหมายต่างๆ ปัญหาคือเรามีกฎระเบียบเรื่องความปลอดภัยข้อมูลที่เข้มงวดมาก การส่งข้อมูลเหล่านี้ไปประมวลผลบน Cloud เลยเป็นไปไม่ได้ การสรุปเอกสารด้วยวิธีเดิมๆ ด้วยการใช้ OCR แล้วส่งไปให้ Cloud ประมวลผลนั้นกินเวลาและทรัพยากรมากเกินไป ยิ่งถ้าเอกสารมีความซับซ้อนหรือมีภาษาเฉพาะทางมากเท่าไหร่ ก็ยิ่งทำให้ระบบช้าลงและเกิดข้อผิดพลาดมากขึ้น สถานการณ์แบบนี้ทำให้เราเสียเวลาและค่าใช้จ่ายไปเยอะเลยครับ

บทความนี้จะช่วยแก้ปัญหาการสรุปเอกสาร PDF ที่มีข้อจำกัดด้านความปลอดภัยข้อมูล โดยใช้ PHP ร่วมกับ Ollama ซึ่งเป็น AI model ที่สามารถรันบน PC ของเราได้โดยไม่ต้องส่งข้อมูลออก Cloud วิธีนี้จะช่วยให้เราประมวลผลเอกสาร PDF ได้อย่างรวดเร็วและปลอดภัย เหมาะสำหรับทีมที่ต้องการสรุปเอกสารจำนวนมาก หรือต้องการรักษาความปลอดภัยของข้อมูลอย่างเคร่งครัด แต่สำหรับเอกสารที่มีโครงสร้างซับซ้อนมากๆ หรือต้องการการวิเคราะห์ที่ลึกซึ้ง อาจจะต้องใช้โซลูชันอื่นๆ เพิ่มเติมครับ

ก่อนเริ่ม เราต้องมีสิ่งต่อไปนี้:

  • PHP 8.1 หรือสูงกว่า
  • Ollama ติดตั้งแล้ว (ดาวน์โหลดได้ที่ Ollama)
  • PHP-FPM (ถ้ายังไม่ได้ติดตั้ง)
  • ไลบรารี `FPDF` สำหรับอ่าน PDF (เวอร์ชัน 1.8)

ถ้ายังไม่เคยรู้จัก Ollama มาอ่านบทความนี้ก่อนได้เลย: Ollama คืออะไร? สร้าง AI บน PC ง่ายกว่าที่คิด! และวิธีติดตั้ง Ollama: Run Ollama AI Locally with PHP - No OpenAI Needed!

การอ่าน PDF ด้วย PHP และ FPDF

a man sitting at a desk with a laptop and papers
Photo by Vitaly Gariev on Unsplash

เราจะใช้ไลบรารี FPDF เพื่ออ่านเนื้อหาจากไฟล์ PDF FPDF เป็นไลบรารีที่ใช้งานง่ายและไม่ต้องใช้ dependencies ที่ซับซ้อน มันจะช่วยให้เราสามารถดึงข้อมูลจาก PDF ได้อย่างง่ายดาย


  AddPage();
  $pdf->SetFont('Arial', '', 12);

  // อ่านเนื้อหาจาก PDF (ตัวอย่าง)
  $content = $pdf->Text('0', '0', 'This is a sample text from a PDF.');

  echo $content;
  ?>
  

Output: เนื้อหาจาก PDF ที่เราอ่านได้ออกมาเป็น text string

Error ที่มักเจอ: FPDF อาจจะอ่าน PDF ที่มี format ที่ไม่รองรับไม่ได้ ลองตรวจสอบว่า PDF ของคุณเป็น format ที่ FPDF รองรับหรือไม่ (PDF/A เป็น format ที่แนะนำ)

การส่งข้อมูลไปยัง Ollama ด้วย PHP

หลังจากอ่านเนื้อหาจาก PDF แล้ว เราจะส่งข้อมูลนั้นไปยัง Ollama เพื่อให้ AI model ประมวลผล เราจะใช้ `curl` ในการส่ง request ไปยัง Ollama API


   $prompt,
    "stream" => false,
    "model" => "mistralai/Mistral-7B-Instruct-v0.2" // หรือ model อื่นที่ต้องการ
  );

  $json_data = json_encode($data);

  $result = curl_post($ollama_url, $json_data, $headers);

  if ($result) {
    echo $result;
  } else {
    echo "Error: " . curl_error($curl));
  }
  ?>
  

Output: Text summary ที่ได้จาก Ollama (หรือ error message ถ้าเกิดผิดพลาด)

Error ที่มักเจอ: Ollama อาจจะไม่ได้รันอยู่ หรือ URL ของ Ollama API ไม่ถูกต้อง ตรวจสอบให้แน่ใจว่า Ollama รันอยู่และ URL ถูกต้อง

การจัดการ Response จาก Ollama

white book page on brown wooden table
Photo by Bruno Fernandes on Unsplash

Response จาก Ollama จะอยู่ในรูปแบบ JSON เราจะต้อง parse JSON นี้เพื่อดึงข้อมูล summary ออกมา


  
  

Output: Text summary ที่ได้จาก Ollama

Error ที่มักเจอ: Response จาก Ollama อาจจะไม่ตรงตามที่คาดหวัง ตรวจสอบว่า prompt ที่เราส่งให้ Ollama ถูกต้องหรือไม่ ลองปรับ parameters ต่างๆ เช่น temperature และ top_p เพื่อให้ได้ผลลัพธ์ที่ดีขึ้น

สิ่งที่ควรระวัง / ข้อผิดพลาดที่เจอบ่อย

จริงๆ ผมไม่ค่อยชอบวิธีนี้เพราะว่า Ollama เป็น AI model ที่ค่อนข้าง resource intensive การรัน model บน PC ของเราอาจจะทำให้ระบบช้าลง นอกจากนี้ ถ้าเอกสาร PDF มีขนาดใหญ่มากๆ อาจจะต้องใช้ memory มากขึ้น ทำให้เกิดปัญหา memory leak ได้ อีกอย่างคือการจัดการ prompt เป็นสิ่งสำคัญ ถ้า prompt ไม่ชัดเจน หรือไม่ถูกต้อง AI model อาจจะให้ผลลัพธ์ที่ไม่ตรงกับที่ต้องการ

ข้อผิดพลาดที่มักเจอคือปัญหาเรื่อง network connectivity ถ้า Ollama ไม่สามารถเชื่อมต่อกับ network ได้ จะทำให้การส่งข้อมูลไปยัง Ollama และรับ response กลับมาไม่ได้ ตรวจสอบให้แน่ใจว่า firewall ไม่ได้ block port 11434 (default port ของ Ollama) และว่า Ollama สามารถ ping ได้จาก server ของคุณ

สุดท้าย ข้อผิดพลาดที่มักเจอคือปัญหาเรื่อง JSON decoding ถ้า response จาก Ollama ไม่เป็นรูปแบบ JSON หรือมี syntax error จะทำให้เราไม่สามารถ parse JSON นี้ได้ ตรวจสอบว่า response จาก Ollama เป็นรูปแบบ JSON ที่ถูกต้องหรือไม่

คำถาม

Q1: ผมควรใช้ Ollama กับ PHP ทำไม?

A1: เพราะว่ามันช่วยให้เราประมวลผลเอกสาร PDF ได้โดยไม่ต้องส่งข้อมูลออก Cloud ซึ่งช่วยรักษาความปลอดภัยของข้อมูล และยังช่วยลดค่าใช้จ่ายในการประมวลผลได้อีกด้วย

Q2: ผมควรเลือก model อะไรให้ Ollama?

A2: ขึ้นอยู่กับความต้องการของคุณ ถ้าต้องการความเร็วในการประมวลผล อาจจะเลือก model ที่มีขนาดเล็กกว่า แต่ถ้าต้องการผลลัพธ์ที่ดีที่สุด อาจจะเลือก model ที่มีขนาดใหญ่กว่า แต่ก็ต้องแลกมาด้วยเวลาในการประมวลผลที่นานขึ้น

Q3: ผมจะปรับปรุงผลลัพธ์จาก Ollama ได้อย่างไร?

A3: โดยการปรับ prompt ที่เราส่งให้ Ollama Prompt ที่ดีจะช่วยให้ Ollama เข้าใจสิ่งที่เราต้องการ และให้ผลลัพธ์ที่ตรงกับความต้องการของเรามากที่สุด

สรุปแล้ว ผมคิดว่าวิธีนี้เป็นทางเลือกที่น่าสนใจสำหรับทีมที่ต้องการจัดการเอกสาร PDF จำนวนมาก โดยไม่ต้องกังวลเรื่องความปลอดภัยของข้อมูล มันเป็นโซลูชันที่ flexible และปรับแต่งได้ตามความต้องการของเรา ผมแนะนำให้ลองทำตามขั้นตอนเหล่านี้ดู แล้วคุณจะเห็นว่ามันง่ายกว่าที่คิดครับ ต่อไปผมจะลอง integrate กับ vector database เพื่อสร้างระบบ summarization ที่สามารถค้นหาข้อมูลที่เกี่ยวข้องในเอกสาร PDF ได้อย่างรวดเร็วครับ

Boonyadol Morruchai (Senior Full-stack Developer)

ผมเป็น IT Professional ที่มีประสบการณ์ในสายงานมากว่า 20 ปี เชี่ยวชาญการออกแบบระบบ Enterprise และ Automation Tools ปัจจุบันมุ่งเน้นการประยุกต์ใช้ AI (Gemini/OpenAI) เพื่อเพิ่มประสิทธิภาพในการเขียน Code และการจัดการข้อมูลขนาดใหญ่ บล็อกนี้สร้างขึ้นเพื่อแชร์ "ประสบการณ์หน้างาน" ปัญหาจริงที่เจอ และวิธีแก้ปัญหาฉบับ Senior Dev ครับ

แสดงความคิดเห็น

ใหม่กว่า เก่ากว่า