ขั้นตอนที่ 0 — การอัปโหลด
2.3 ขั้นตอนที่ 0 — การอัปโหลดและการประมวลผลเบื้องต้น
ฝั่งไคลเอนต์
ไคลเอนต์ส่งภาพที่ถ่ายหรือ PDF ตรงไปยังปลายทางอัปโหลดของแอปพลิเคชันเป็น multipart POST การประมวลผลเบื้องต้นเป็นความรับผิดชอบของเซิร์ฟเวอร์ การรักษาไคลเอนต์ให้เบาหมายความว่าทุกพื้นผิวการถ่ายภาพได้ประโยชน์จากการปรับมาตรฐานชุดเดียวกัน โดยไม่ต้องส่งโค้ดประมวลผลภาพไปยังแต่ละแพลตฟอร์ม
ฝั่งเซิร์ฟเวอร์
เส้นทางอัปโหลดตรวจสอบคำขอก่อนงานจัดเก็บใด ๆ:
- ขีดจำกัดขนาด — ขนาดการอัปโหลดถูกตรวจสอบตามขีดจำกัดที่กำหนดในระบบผลิต
- การตรวจ magic byte — เซิร์ฟเวอร์ตรวจสอบไบต์นำหน้าของบัฟเฟอร์เพื่อยืนยันว่าข้อมูลที่ส่งมาเป็นภาพแรสเตอร์จริง (
JPEG,PNG,WEBP,HEICและรูปแบบอื่นที่รองรับ) หรือ PDF โดยไม่ขึ้นกับContent-Typeที่ไคลเอนต์ระบุ สิ่งนี้ปิดกั้นสคริปต์หรือมาร์กอัปที่ลักลอบส่งเข้ามาภายใต้ประเภทimage/*
การอัปโหลดที่ผ่านการยอมรับจะเข้าสู่การประมวลผลเบื้องต้นฝั่งเซิร์ฟเวอร์ด้วย sharp:
- ทิศทางภาพ — หมุนอัตโนมัติตามข้อมูล EXIF เพื่อให้ใบเสร็จตั้งตรงก่อนขั้นตอนการอ่าน
- การบีบอัด — ภาพถูกเข้ารหัสใหม่ตามโปรไฟล์ขนาดและคุณภาพที่ปรับจูนไว้สำหรับขั้นตอน vision
- การจัดเก็บ — ภาพที่ประมวลผลแล้วถูกเขียนลง Vercel Blob object storage โดยมีเส้นทางสำรองเป็นฐานข้อมูลเมื่อ Blob storage ใช้งานไม่ได้ ภาพที่จัดเก็บถูกกำหนดให้ลบตามนโยบายการเก็บรักษาข้อมูล
การตอบสนองส่งคืน receipt_id และการอ้างอิงภาพที่จัดเก็บไว้ จากนั้นไคลเอนต์เรียก POST /api/receipt/analyze เพื่อเข้าสู่ขั้นตอนที่ 1
การตรวจสอบซ้ำ
การตรวจสอบแฮชไฟล์แบบตรงตัวทำงานก่อนเริ่มงานที่มีต้นทุนสูงใด ๆ: ค่า SHA-256 ของไบต์ที่อัปโหลดถูกเปรียบเทียบกับใบเสร็จที่จัดเก็บไว้ก่อนหน้า การตรวจสอบความคล้ายเชิงการรับรู้ถูกเลื่อนออกไปโดยตั้งใจจนหลังการแยกเนื้อหา ซึ่ง ณ จุดนั้นสามารถตรวจไขว้กับแฮชเนื้อหาได้ การเปรียบเทียบเชิงภาพตั้งแต่ต้นจะสิ้นเปลืองงานนั้นไปกับการอัปโหลดที่การตรวจแบบตรงตัวจัดการได้อยู่แล้ว
ทั้งสองกรณีของการซ้ำจะปฏิเสธการอัปโหลดด้วยข้อผิดพลาดว่าเป็นรายการซ้ำ:
- ซ้ำโดยผู้ใช้รายเดียวกัน — ผู้ใช้ได้รับแจ้งว่าได้อัปโหลดใบเสร็จนี้ไปแล้ว สิ่งนี้ป้องกันการอัปโหลดซ้ำโดยไม่ได้ตั้งใจและความพยายามรับรางวัลซ้ำ
- การชนกันข้ามผู้ใช้ — ผู้ใช้ได้รับแจ้งว่าใบเสร็จนี้ถูกอัปโหลดโดยบัญชีอื่น นี่เป็นส่วนหนึ่งของการป้องกันการฟาร์ม
สัญญาณความคล้ายคลึงที่แน่นอนถูกปรับแต่งในระบบผลิตและจัดการในชั้นปฏิบัติการภายใน