PerfectVector
โดย Jay

แปลงภาพเป็นเวกเตอร์ด้วย API ทีละชุดและทำต่อได้

แปลงภาพหลายไฟล์ผ่าน API ด้วยคิวที่บันทึกลงดิสก์ เก็บ ID การแปลง จัดการไฟล์ที่ล้มเหลว และทำต่อโดยไม่ส่งงานที่เสร็จแล้วซ้ำ

อ่าน 3 นาที
ในหน้านี้

หากต้องการแปลงภาพหลายไฟล์ด้วย API ให้ใส่ต้นฉบับแต่ละไฟล์ลงในคิวและบันทึกความคืบหน้าก่อนไปไฟล์ถัดไป ใน PerfectVector API v1 โปรแกรมประมวลผลของคุณดูแลคิวเอง API รับหนึ่งภาพต่อคำขอ และตามค่าเริ่มต้นให้แปลงจริงพร้อมกันได้หนึ่งรายการต่อบัญชี ข้อจำกัด PerfectVector API

ลองกับรูปภาพของคุณเอง
เปิดเครื่องมือฉบับเต็ม
ลองใช้ฟรี วางรูปภาพเพื่อดูตัวอย่างเวกเตอร์ของคุณได้เลย ไม่ต้องสมัครสมาชิก

สร้างรายการคิวให้ภาพแต่ละไฟล์

เริ่มจากสำเนาต้นฉบับที่ไม่เปลี่ยนแปลงและโฟลเดอร์ผลลัพธ์แยก ตัวอย่างใช้โปรแกรมประมวลผลหนึ่งตัว ฐานข้อมูล SQLite ในเครื่อง และโฟลเดอร์ PNG, JPEG หรือ WebP แบบเฟรมเดียว อ่านข้อจำกัดไฟล์ของ APIก่อนเพิ่มไฟล์ลงคิว ใช้พาธผลลัพธ์ที่ไม่ซ้ำเพื่อไม่ให้ต้นฉบับสองไฟล์ชื่อ logo.png เขียนทับกัน

บันทึกฟิลด์ต่อไปนี้พร้อมกันก่อนอัปโหลดครั้งแรก

ฟิลด์สิ่งที่ต้องเก็บ
ต้นฉบับพาธคงที่หรือเวอร์ชันออบเจ็กต์ พร้อมค่าแฮชของไบต์ต้นฉบับ
คีย์คำขอคีย์ป้องกันการส่งซ้ำที่ระบุว่าคำขอไหนเป็นการส่งซ้ำของงานเดิม บันทึกเวลาที่ลอง POST ครั้งแรกด้วย
ID การแปลงID รูปแบบ vec_… ของ API บันทึกทันทีที่ได้รับ
ผลลัพธ์พาธปลายทางในเครื่องที่ไม่ซ้ำและสถานะคิวล่าสุดที่ยืนยันแล้ว
รายละเอียดความล้มเหลวรหัสปัญหาจาก API, ID คำขอ หรือข้อผิดพลาดของการแปลง หากมี

คอมมิตรายการคิวก่อนส่ง POST หาก API รับไฟล์แล้วแต่การเชื่อมต่อหลุดก่อนได้ ID คุณยังมีคีย์เดิมให้ใช้ PerfectVector รู้จักคีย์นั้นเป็นเวลา 24 ชั่วโมงนับจากคำขอแรกในบัญชีและโหมดเดิม เมื่อส่งซ้ำ ให้ใช้ข้อมูลไบต์และตัวเลือกเดิมทุกอย่าง การป้องกันการส่งซ้ำของ PerfectVector

ภาพประกอบขั้นตอน
ชุดภาพแรสเตอร์ที่ติดป้ายเชื่อมกับรายการแปลงที่บันทึกไว้แล้วไปยัง SVG ลูกศรเริ่มใหม่ชี้กลับมาที่รายการเดิม
บันทึก ID การแปลงก่อนดาวน์โหลด หากงานหยุดกลางทาง ให้ใช้ ID นั้นทำต่อ

ส่ง ตรวจสถานะ และบันทึกทีละรายการ

ส่ง POST แบบ multipart ไปยัง /v1/vectorizations โดยใส่ภาพในฟิลด์ image และคีย์ของแถวในเฮดเดอร์ Idempotency-Key ใช้ Prefer: respond-async เพื่อให้คำขอส่งงานจบเร็ว บันทึก ID จากผลตอบกลับที่สำเร็จก่อนเริ่มตรวจสถานะ 202 หมายถึงการแปลงยังไม่เสร็จ ส่วน 201 อาจเป็นรายการที่แปลงสำเร็จหรือล้มเหลว จึงต้องอ่านสถานะใน JSON การรอและงานอะซิงโครนัสของ PerfectVector

ตารางนี้แสดงลำดับการตัดสินใจของโปรแกรมประมวลผล สถานะคิวอย่าง saved เป็นชื่อที่คุณกำหนดเอง ส่วน API คืนสถานะอย่าง processing และ succeeded

รายการคิวบนดิสก์ขั้นตอนถัดไป
รายการใหม่ที่บันทึกคีย์แล้วอัปโหลดไบต์เดิมและบันทึก ID การแปลงที่ได้รับ
ไม่ทราบผลการส่งและยังไม่มี IDส่งไฟล์เดิมด้วยคีย์ที่เก็บไว้ภายในช่วงที่ส่งซ้ำได้ หากเลยช่วงแล้ว ให้ทำเครื่องหมายรอตรวจสอบก่อนเริ่มรายการใหม่ที่อาจเสียเครดิต
บันทึก ID การแปลงแล้วตรวจ ID เดิม เว้นช่วงประมาณสองวินาทีระหว่างการตรวจ และรอตามที่ระบบจำกัดอัตราคำขอระบุ
แปลงสำเร็จแต่ไม่มีไฟล์ดาวน์โหลดผล ตรวจ image/svg+xml เขียนลงไฟล์ชั่วคราวแล้วเปลี่ยนชื่อเป็นพาธปลายทาง จากนั้นทำเครื่องหมายว่าบันทึกแล้ว
บันทึกแล้วข้าม POST หากไฟล์หาย ให้ลองดึงผลเดิมขณะที่ลิงก์ยังใช้ได้
ถูกปฏิเสธหรือล้มเหลวบันทึกปัญหา HTTP หรือข้อผิดพลาดสุดท้าย แก้ต้นฉบับที่ผิดก่อนส่งเป็นรายการใหม่

หาก POST ได้ 429 หรือ 503 ให้รอตาม Retry-After แล้วใช้ภาพ ตัวเลือก และคีย์เดิมภายในช่วง 24 ชั่วโมง หากได้ too_many_in_flight ให้รอรายการจริงที่กำลังทำอยู่ให้เสร็จด้วย เมื่อมี ID การแปลง ให้ตรวจ ID ก่อนส่งอีกครั้ง หากยืนยันแล้วว่าสถานะสุดท้ายเป็น failed พร้อม timeout หรือ provider_unavailable ต้องใช้คีย์ใหม่หากจะลองอีกครั้ง รอให้ผู้ให้บริการกลับมาในกรณีหลัง ส่วนการหมดเวลารอของไคลเอนต์ยังไม่บอกผลสุดท้าย ให้ใช้ ID เดิมหรือส่งซ้ำด้วยคีย์เดิมในช่วงที่กำหนด ข้อผิดพลาด PerfectVector API

หลังเริ่มใหม่ โปรแกรมตรวจสถานะหรือดาวน์โหลดซ้ำได้โดยไม่เริ่มการแปลงใหม่ ดาวน์โหลดและเก็บ SVG แต่ละไฟล์ที่สำเร็จก่อนไปแถวถัดไป ผลลัพธ์ API หมดอายุ 24 ชั่วโมงหลังการแปลงเสร็จ ผลลัพธ์และการดาวน์โหลด PerfectVector

ใช้รหัสเทียมนี้ปรับให้เข้ากับฐานข้อมูลและไคลเอนต์ HTTP ของคุณ การทดสอบด้านล่างสมมติว่าโปรแกรมบันทึกทุกคำขอ และหยุดชั่วคราวเพื่อทดสอบทันทีหลังคอมมิต ID การแปลงตัวที่สอง

for each queue row in a stable order:
    if the row is rejected or its saved SVG is still on disk:
        continue
    if the row has no conversion ID:
        verify source bytes match the stored digest
        if an earlier POST is uncertain and the replay window expired:
            flag the row for review and continue
        POST with the stored key and original bytes and options
        if the response is a permanent input rejection:
            commit the error and continue
        if the POST times out or the service requests a retry:
            keep the same key, record the retry time and stop this run
        commit the returned conversion ID
        pause here when testing recovery after a commit
    GET status by conversion ID, waiting between pending responses
    if conversion failed:
        commit its error and continue
    download the existing result and check the SVG media type
    write to a temporary file and rename it to the output path
    commit the saved state

ทดสอบเริ่มใหม่ด้วยไฟล์สามไฟล์

ใช้โลโก้ PNG ขนาดเล็กสองไฟล์และ PNG ที่เสียหายหนึ่งไฟล์ ใส่ไฟล์เสียไว้โดยตั้งใจเพื่อดูว่าคิวยังไปต่อหลังถูกปฏิเสธหรือไม่ เมื่อใช้คีย์ทดสอบ ไฟล์ที่ใช้ได้ทั้งสองควรได้ SVG ตัวอย่าง ส่วนไฟล์เสียควรไม่ผ่านการตรวจและไม่มีไฟล์ในโฟลเดอร์ผลลัพธ์ โหมดทดสอบคืน SVG ตัวอย่างเดียวกันสำหรับสองไฟล์ที่ใช้ได้ โหมดทดสอบ PerfectVector

  1. ให้ไฟล์แรกถึงสถานะ saved หยุดโปรแกรมหลังเขียน ID ของไฟล์ที่ใช้ได้ไฟล์ที่สอง แต่ก่อนบันทึกผล
  2. เริ่มโปรแกรมใหม่ ยืนยันว่าข้ามไฟล์แรกและดาวน์โหลดไฟล์ที่สองด้วย ID การแปลงเดิม
  3. ตรวจว่าไฟล์เสียปรากฏในรายงานความล้มเหลวพร้อมรหัสปัญหา และไม่มี SVG สำหรับไฟล์นั้น
  4. รันโปรแกรมอีกครั้ง ตรวจว่าไฟล์ทั้งสองยังอยู่และไม่มีการส่งรายการที่สำเร็จไปแล้วอีก

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

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

ส่งทุกไฟล์ในคำขอ API เดียวได้ไหม

PerfectVector API v1 รับหนึ่งภาพต่อ POST ส่งงานเป็นหลายคำขอแยกกัน สำหรับงานจริง ให้ทำตามขีดจำกัดของบัญชีและรอให้รายการปัจจุบันเสร็จก่อนส่งรายการถัดไป ข้อจำกัด PerfectVector API

ถ้า SVG หมดอายุแล้วควรทำอย่างไร

หากเคยดาวน์โหลด ให้ใช้ SVG ที่เก็บไว้ มิฉะนั้นให้ตรวจสถานะการแปลงแล้วตัดสินใจว่าจะเริ่มรายการใหม่หรือไม่ การแปลงจริงรายการใหม่อาจใช้อีกหนึ่งเครดิตหากสำเร็จ ผลลัพธ์และการดาวน์โหลด PerfectVector

แหล่งอ้างอิง

  1. PerfectVector — ข้อจำกัด — การตรวจไฟล์และจำนวนงานพร้อมกันเริ่มต้นของบัญชี
  2. PerfectVector — การป้องกันการส่งซ้ำ — ขอบเขตคีย์ ช่วงที่ส่งซ้ำได้ และอินพุตที่ต้องตรงกัน
  3. PerfectVector — การรอและงานอะซิงโครนัส — การส่งแบบอะซิงโครนัสและตรวจสถานะ
  4. PerfectVector — ผลลัพธ์ — การดาวน์โหลด ความล้มเหลว และวันหมดอายุ
  5. PerfectVector — โหมดทดสอบ — การตรวจอัปโหลดและผลลัพธ์ที่คีย์ทดสอบใช้ยืนยันได้
  6. PerfectVector — ข้อผิดพลาด — การรอตาม Retry-After สถานะล้มเหลว และกรณีที่ต้องใช้คีย์ใหม่

รับคีย์ทดสอบจากหน้า PerfectVector API แล้วลองใช้ต้นฉบับของคุณสามไฟล์ ตรวจว่าทุกแถวที่สำเร็จมี SVG บนดิสก์ และเมื่อเริ่มใหม่ไม่มีการส่งแถวที่เสร็จแล้ว

เพิ่มเติมจากบล็อก

PerfectVector

เปลี่ยนรูปภาพเป็น
เส้นพาธเวกเตอร์ที่เรียบร้อยและแก้ไขได้

แปลงเวกเตอร์และตรวจดูพรีวิวได้ฟรี ไม่จำกัดจำนวนครั้งต่อวัน