เพื่อดึงข้อมูลจากเอกสารเป็นจำนวนมากด้วยเอเจนต์ AI ให้เขียนสคีม่าในพรอมต์ ชี้เอเจนต์ไปที่โฟลเดอร์ และกำหนดให้มีรายการข้อยกเว้นที่ท้ายสุด เซิร์ฟเวอร์ GroupDocs.Parser.Mcp ทำการอ่านแบบโลคัลในคอนเทนเนอร์ Docker ดังนั้นไฟล์ทุกไฟล์จะผ่านเครื่องมือการสกัดข้อมูลเดียวกันและไม่มีเอกสารใดออกจากเครื่อง LLM จะตัดสินลำดับการทำงาน; เอนจินจะอ่านไฟล์
สำหรับไฟล์ PDF ทุกไฟล์ในโฟลเดอร์เอกสารของฉัน: สกัดตารางเป็น JSON, รวมคอลัมน์ amount, และให้ตารางหนึ่งแถวที่มีชื่อไฟล์, ผลรวม, จำนวนหน้า
เวอร์ชันขั้นตอนต่อขั้นตอนพร้อมการกำหนดค่าและการแก้ไขปัญหาอยู่ในเอกสาร: วิธีดึงข้อมูลจากโฟลเดอร์ของเอกสารพร้อมกัน
ทำไมการสกัดข้อมูลด้วยมือจึงให้ผลลัพธ์ที่ไม่สอดคล้องกัน?
เมื่อคนคัดลอกค่าจากเอกสารทีละค่า แต่ละไฟล์จะถูกจัดการแตกต่างกันเล็กน้อย: คนหนึ่งรวมภาษี, คนอื่นไม่รวม, อีกคนหนึ่งข้ามไฟล์ที่มีรูปแบบแปลก การไม่สอดคล้องนี้มองไม่เห็นจนกว่าจะเปรียบเทียบผลรวม กระบวนการทำงานแก้ไขปัญหานี้โดยทำให้กฎเป็นรูปธรรมและนำไปใช้กับทุกไฟล์ในแบบเดียวกัน ด้วยเอเจนต์ กฎอยู่ในพรอมต์เดียวและเครื่องมือการสกัดทำงานเหมือนกันบนไฟล์ที่หนึ่งและไฟล์ที่สองร้อย
คุณสร้างเวิร์กโฟลว์อย่างไร?
เมานท์โฟลเดอร์เข้าในคอนเทนเนอร์เป็น /data, ตั้งค่า GROUPDOCS_MCP_STORAGE_PATH=/data, แล้วให้เอเจนต์ทำตามขั้นตอนต่อไปนี้
- ตรวจสอบไลเซนส์ — พรอมต์: “เรียกใช้ get_license_status และบอกโหมดให้ฉัน” การสกัดข้อมูลโดยไม่มีไลเซนส์มีข้อจำกัด และการอ่านบางส่วนจากโฟลเดอร์จะให้ชุดข้อมูลที่ผิดพลาดโดยเงียบ ๆ
- คัดแยกโฟลเดอร์ — พรอมต์: “สำหรับแต่ละไฟล์ ให้รายงานรูปแบบ จำนวนหน้า และว่าการสกัดข้อความให้ผลลัพธ์อะไรหรือไม่”
get_document_infoจะให้ประเภท, จำนวนหน้าและขนาด, ส่วนการเรียกextract_textหน้าหนึ่งจะแสดงว่ามีข้อความหรือไม่ - แก้ไขสคีม่า — พรอมต์: “สำหรับแต่ละไฟล์ที่อ่านได้ ให้สกัดตารางรายการเป็น JSON. คอลัมน์: item, quantity, amount. รวมค่าคอลัมน์ amount” นี้ใช้
extract_tables - รวบรวมความล้มเหลวอย่างชัดเจน — พรอมต์: “รายการทุกไฟล์ที่ล้มเหลว, มีการป้องกันด้วยรหัสผ่าน, หรือไม่คืนตาราง พร้อมเหตุผล” การทำแบชที่รายงานเฉพาะผลสำเร็จจะซ่อนข้อยกเว้น
- เขียนผลลัพธ์ — พรอมต์: “เขียนแถวหนึ่งต่อไฟล์เป็น 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 หรือ ตารางสรุปได้ ตรวจสอบรายการข้อยกเว้นก่อนนำข้อมูลใด ๆ ไปใส่ระบบอื่น
ไปให้ลึกขึ้น
- เอกสาร, วิธีทำแบบมาตรฐาน: วิธีดึงข้อมูลจากโฟลเดอร์ของเอกสารพร้อมกัน
- ศูนย์รวมเอกสาร: GroupDocs.Parser MCP Server
- เริ่มต้นที่นี่: 3 วิธีดึงข้อมูลเอกสารด้วยเอเจนต์ AI และ MCP (ข้อความ, ตาราง, รูปภาพ)
- เกี่ยวข้อง: ตารางจาก PDF ไปเป็น JSON โดยไม่ให้ LLM คาดเดาเซลล์
- เกี่ยวข้อง: การทำงานอัตโนมัติจากสแกนไปยังบันทึกด้วยเอเจนต์ AI
- โมเดลการติดตั้งในสถานที่และความปลอดภัย: 3 สถาปัตยกรรมสำหรับการประมวลผลเอกสาร AI, และแบบที่ทำให้ไฟล์อยู่ภายในเครือข่ายของคุณ
- คำถาม: GroupDocs Parser forum
- แหล่งที่มา: GroupDocs.Parser.Mcp บน GitHub