เพื่อดึงข้อมูลจากเอกสารเป็นจำนวนมากด้วยเอเจนต์ AI ให้เขียนสคีม่าในพรอมต์ ชี้เอเจนต์ไปที่โฟลเดอร์ และกำหนดให้มีรายการข้อยกเว้นที่ท้ายสุด เซิร์ฟเวอร์ GroupDocs.Parser.Mcp ทำการอ่านแบบโลคัลในคอนเทนเนอร์ Docker ดังนั้นไฟล์ทุกไฟล์จะผ่านเครื่องมือการสกัดข้อมูลเดียวกันและไม่มีเอกสารใดออกจากเครื่อง LLM จะตัดสินลำดับการทำงาน; เอนจินจะอ่านไฟล์

สำหรับไฟล์ PDF ทุกไฟล์ในโฟลเดอร์เอกสารของฉัน: สกัดตารางเป็น JSON, รวมคอลัมน์ amount, และให้ตารางหนึ่งแถวที่มีชื่อไฟล์, ผลรวม, จำนวนหน้า

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

ทำไมการสกัดข้อมูลด้วยมือจึงให้ผลลัพธ์ที่ไม่สอดคล้องกัน?

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

คุณสร้างเวิร์กโฟลว์อย่างไร?

เมานท์โฟลเดอร์เข้าในคอนเทนเนอร์เป็น /data, ตั้งค่า GROUPDOCS_MCP_STORAGE_PATH=/data, แล้วให้เอเจนต์ทำตามขั้นตอนต่อไปนี้

  1. ตรวจสอบไลเซนส์ — พรอมต์: “เรียกใช้ get_license_status และบอกโหมดให้ฉัน” การสกัดข้อมูลโดยไม่มีไลเซนส์มีข้อจำกัด และการอ่านบางส่วนจากโฟลเดอร์จะให้ชุดข้อมูลที่ผิดพลาดโดยเงียบ ๆ
  2. คัดแยกโฟลเดอร์ — พรอมต์: “สำหรับแต่ละไฟล์ ให้รายงานรูปแบบ จำนวนหน้า และว่าการสกัดข้อความให้ผลลัพธ์อะไรหรือไม่” get_document_info จะให้ประเภท, จำนวนหน้าและขนาด, ส่วนการเรียก extract_text หน้าหนึ่งจะแสดงว่ามีข้อความหรือไม่
  3. แก้ไขสคีม่า — พรอมต์: “สำหรับแต่ละไฟล์ที่อ่านได้ ให้สกัดตารางรายการเป็น JSON. คอลัมน์: item, quantity, amount. รวมค่าคอลัมน์ amount” นี้ใช้ extract_tables
  4. รวบรวมความล้มเหลวอย่างชัดเจน — พรอมต์: “รายการทุกไฟล์ที่ล้มเหลว, มีการป้องกันด้วยรหัสผ่าน, หรือไม่คืนตาราง พร้อมเหตุผล” การทำแบชที่รายงานเฉพาะผลสำเร็จจะซ่อนข้อยกเว้น
  5. เขียนผลลัพธ์ — พรอมต์: “เขียนแถวหนึ่งต่อไฟล์เป็น CSV ในโฟลเดอร์ผลลัพธ์”

ไฟล์จะถูกระบุด้วยชื่อภายในคอนเทนเนอร์ ดังนั้นเอเจนต์จะส่ง invoice-014.pdf ไม่ใช่เส้นทางของโฮสต์

เอเจนต์ตัดสินใจอะไร และเอนจินทำอะไร?

ขั้นตอน เอเจนต์ตัดสินใจ เอนจินทำ
คัดแยก ไฟล์ใดที่จะสกัด รายงานประเภท, จำนวนหน้าและขนาด; extract_text แสดงว่ามีข้อความหรือไม่
ดึงข้อมูล เครื่องมือใดที่ไฟล์ต้องการ คืนข้อความหรือแถวตารางจากไฟล์
ตรวจสอบ ผลรวมตรงกับข้อความหรือไม่ ไม่มี; เอเจนต์ทำการเปรียบเทียบ
ข้อยกเว้น ไฟล์ใดจะอยู่ในรายการ คืนข้อความข้อผิดพลาดสำหรับไฟล์ที่ล้มเหลว
ผลลัพธ์ รูปแบบของ CSV ไม่มี; เอเจนต์เขียนไฟล์

การแบ่งหน้าที่นี้เป็นจุดสำคัญ การดึงค่าคืองานของเอนจินที่กำหนดผลลัพธ์ได้อย่างแน่นอน; การตัดสินใจและการประกอบผลลัพธ์คือหน้าที่ของเอเจนต์

ตัวอย่างเซสชัน (ย่อ):

You:    Check the license, triage the folder, then extract line items from every readable PDF and list the exceptions.
Agent:  [calls get_license_status, get_document_info x12, extract_text, extract_tables x10]
        License mode: evaluation. Results below are a smoke test.
        12 files: 10 with a text layer, 1 scan, 1 password-protected.
        Totals written for 10 files. Exceptions: scan-007.pdf (no text layer), hr-020.pdf (password required).

จะทำอย่างไรกับไฟล์ที่ไม่ตรงเงื่อนไข?

สแกนไม่มีเลเยอร์ข้อความ ดังนั้นการสกัดตารางจะไม่คืนค่าอะไรให้ ตั้งไฟล์เหล่านั้น aside, หรือให้เอเจนต์สาขาไปยัง extract_barcodes เมื่อหน้ามีหมายเลขติดตามหรือรหัสคำสั่ง รายการที่ผ่านมาจะทำหน้าที่เป็นรายการตรวจสอบว่ามีส่วนใดของคลังข้อมูลเป็นสแกนบ้าง ไฟล์ที่ป้องกันด้วยรหัสผ่านจะล้มเหลวในการเรียกของมันเอง ดังนั้นให้เอเจนต์รายงานและดำเนินการต่อ; เครื่องมือรับอาร์กิวเมนต์ password เมื่อคุณมีรหัสผ่าน

ทำอย่างไรให้การรันขนาดใหญ่เป็นไปได้ในงบประมาณ?

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

ขีดจำกัดคืออะไร?

หากไม่มีไลเซนส์ การสกัดข้อมูลจะถูกจำกัด; ขีดจำกัดที่แน่นอนอยู่ใน หน้าลิขสิทธิ์ของไลบรารี เซิร์ฟเวอร์ไม่มี OCR ดังนั้นข้อความที่สแกนไม่สามารถจับได้ มันจัดจำหน่ายเป็นภาพ Docker เท่านั้น; ไม่มีคำสั่ง dnx

ลงทะเบียนเซิร์ฟเวอร์อย่างไร?

รายการกำหนดค่าขั้นต่ำสำหรับ Cursor, Claude Desktop หรือ Windsurf โดยใช้เส้นทางคอนเทนเนอร์จากเอกสารการกำหนดค่า Parser:

{
  "mcpServers": {
    "groupdocs-parser": {
      "command": "docker",
      "args": ["run", "--rm", "-i",
               "-v", "/path/to/documents:/data",
               "-e", "GROUPDOCS_MCP_STORAGE_PATH=/data",
               "ghcr.io/groupdocs-parser/parser-net-mcp:latest"]
    }
  }
}

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

ฉันสามารถประมวลผลโฟลเดอร์ใบแจ้งหนี้ด้วย AI โดยไม่ต้องอัปโหลดได้หรือไม่?
ได้. คอนเทนเนอร์อ่านโฟลเดอร์ที่เมานท์และสื่อสารกับไคลเอนต์ของคุณผ่าน stdio ดังนั้นใบแจ้งหนี้จะอยู่บนเครื่องของคุณ

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

เอเจนต์สามารถอัตโนมัติการป้อนข้อมูลจากเอกสารได้หรือไม่?
เอเจนต์สามารถประกอบแถวที่สกัดเป็น CSV หรือ ตารางสรุปได้ ตรวจสอบรายการข้อยกเว้นก่อนนำข้อมูลใด ๆ ไปใส่ระบบอื่น

ไปให้ลึกขึ้น