Σάρωση μέσω API

Η σάρωση μέσω API μετατρέπει ένα PDF σε αντίγραφο που μοιάζει σαρωμένο, με μια κλήση REST. Είναι κατάλληλη για αυτοματισμούς και ενσωμάτωση σε εφαρμογές. Δημιουργήστε μια εργασία, μεταφορτώστε το PDF και ελέγξτε την κατάσταση ή περιμένετε το webhook. Τρία βήματα, από οποιοδήποτε περιβάλλον ή γλώσσα μπορεί να στείλει αίτημα HTTP. Μπορείτε να ρυθμίσετε τη χρωματική λειτουργία, την ανάλυση, την περιστροφή, το θάμπωμα, τον θόρυβο, τη φωτεινότητα, την αντίθεση και το περίγραμμα.

Πώς λειτουργεί μια κλήση

  1. Δημιουργήστε την εργασία

    POST /v1/scan-jobs

    Στείλτε το config και προαιρετικά ένα webhookUrl. Θα λάβετε ένα jobID και ένα προϋπογεγραμμένο uploadURL.

  2. Μεταφορτώστε το PDF

    PUT {uploadURL}

    Στείλτε το αρχείο με PUT απευθείας στην προϋπογεγραμμένη διεύθυνση S3 του προηγούμενου βήματος. Δεν χρειάζεται διακριτικό.

  3. Λάβετε το σαρωμένο αντίγραφο

    GET /v1/scan-jobs/{jobID}

    Ελέγχετε την κατάσταση ή περιμένετε το webhook. Όταν η εργασία ολοκληρωθεί, κατεβάστε το αρχείο από το downloadURL.

Πού χρησιμεύει

Μαζική παραγωγή στον διακομιστή

Συμβάσεις, τιμολόγια και αναφορές που δημιουργούνται στον διακομιστή αποκτούν απευθείας το εφέ σάρωσης, χωρίς χειροκίνητη επανάληψη στη σελίδα.

Ενσωμάτωση σε υπάρχον σύστημα

Προσθέστε μια ενέργεια «Εξαγωγή σαρωμένου αντιγράφου» σε CRM, ERP ή σύστημα διαχείρισης αιτημάτων, η οποία καλεί το API.

Ροές αυτοματισμού

CI, n8n, Zapier και παρόμοια εργαλεία ξεκινούν μια εργασία όταν συμβεί ένα γεγονός. Το webhook ενεργοποιεί το επόμενο βήμα όταν η εργασία ολοκληρωθεί.

Μεγάλες ουρές αρχείων

Οι εργασίες είναι ασύγχρονες: δημιουργήστε τις και καθεμία επεξεργάζεται ανεξάρτητα. Παρακολουθήστε την πρόοδο μέσω των status και createdAfter.

Γλώσσες και περιβάλλοντα

TypeScriptfetch / axios
Node.jsfetch / undici
Pythonrequests / httpx
Gonet/http
PHPcURL / Guzzle
Rubynet/http
JavaHttpClient
cURLΓραμμή εντολών / CI
ΠερισσότεραΟποιοδήποτε πρόγραμμα-πελάτης HTTP

Το API χρησιμοποιεί HTTP και JSON. Μπορεί να κληθεί από οποιαδήποτε γλώσσα ή πλατφόρμα αυτοματισμού που στέλνει αιτήματα.

Παραδείγματα κώδικα

API Bearer Token

Το διακριτικό ανήκει στον λογαριασμό σας και μπορείτε να το αναδημιουργήσετε ανά πάσα στιγμή. Η σάρωση μέσω API απαιτεί Pro: χωρίς έγκυρο διακριτικό το API απαντά με 401, ενώ χωρίς τον ρόλο Pro απαντά με 403.

Δοκιμάστε το

Ορίστε τις παραμέτρους, δείτε το σώμα του αιτήματος να ενημερώνεται και εκτελέστε τις τρεις κλήσεις προς το API.

Παράμετροι σάρωσης

Η δοκιμή καλεί το API με το διακριτικό σας και απαιτεί λογαριασμό Pro. Μπορείτε να δείτε τις παραμέτρους και το σώμα του αιτήματος δωρεάν.

POST/v1/scan-jobs
{
  "config": {
    "rotate": 1,
    "rotate_var": 0.5,
    "colorspace": "gray",
    "blur": 0,
    "noise": 0,
    "border": false,
    "brightness": 1.3,
    "contrast": 1.3,
    "resolution": 150,
    "output_format": "image/jpeg"
  }
}

Στοιχεία εργασίας σάρωσης

παράδειγμα
{
  "jobID": "3f9c1e64-0000-4000-8000-00000000a71b",
  "userID": "8f21c4b0-0000-4000-8000-000000004a17",
  "createdAt": 1724409600,
  "status": "completed",
  "inputUploadedAt": 1724409601,
  "completedAt": 1724409602,
  "numPages": 6,
  "downloadURL": "https://…/output/3f9c.pdf?X-Amz-…"
}

Αναφορά API

ΜέθοδοςΔιαδρομήΠεριγραφή
POST/v1/scan-jobsΔημιουργήστε μια εργασία σάρωσης. Στείλτε config και προαιρετικά webhookUrl. Επιστρέφεται το αντικείμενο εργασίας με κατάσταση created και προϋπογεγραμμένο uploadURL.
PUT{uploadURL}Η προϋπογεγραμμένη διεύθυνση S3 του προηγούμενου βήματος, όχι διεύθυνση στο api.lookscanned.ioΜεταφορτώστε το αρχικό PDF με Content-Type: application/pdf και Content-Length. Η διεύθυνση περιέχει τη δική της υπογραφή, οπότε μην προσθέτετε κεφαλίδα Authorization.
GET/v1/scan-jobs/{jobID}Ανακτήστε μία εργασία για να ελέγξετε την κατάστασή της. Όσο η κατάσταση είναι created, περιλαμβάνει uploadURL. Όταν γίνει completed, περιλαμβάνει downloadURL.
GET/v1/scan-jobsΔείτε τις δικές σας εργασίες με φίλτρα jobID, status ή createdAfter.
Κατάστασηcreatedprocessingcompletedfailed
  • 401 δεν υπάρχει έγκυρο διακριτικό
  • 403 ο λογαριασμός δεν έχει Pro
  • 404 δεν υπάρχει τέτοια εργασία

Σώμα αιτήματος

ΠεδίοΤύποςΠροεπιλογήΠεριγραφή
webhookUrlstring · —Καλείται μία φορά όταν ολοκληρωθεί η εργασία, ώστε να μη χρειάζονται επαναλαμβανόμενοι έλεγχοι κατάστασης.
config.colorspace'gray' | 'sRGB' · graygrayΧρωματικός χώρος της τελικής εικόνας. Η τιμή gray παράγει σάρωση σε κλίμακα του γκρι.
config.resolutionnumber · 7272Ανάλυση της τελικής εικόνας σε DPI.
config.rotatenumber · —Περιστροφή ολόκληρου του εγγράφου σε μοίρες.
config.rotate_varnumber · —Εύρος τυχαίας περιστροφής ανά σελίδα, σε μοίρες, για να μοιάζει με χαρτί που τοποθετήθηκε λοξά.
config.blurnumber · 00Ένταση θαμπώματος.
config.noisenumber · 00Ένταση θορύβου.
config.brightnessnumber · 11Φωτεινότητα· η τιμή 1 τη διατηρεί αμετάβλητη.
config.contrastnumber · 11Αντίθεση· η τιμή 1 τη διατηρεί αμετάβλητη.
config.borderboolean · falsefalseΠροσθήκη περιγράμματος σάρωσης στη σελίδα.
config.output_format'image/png' | 'image/jpeg' · image/jpegimage/jpegΜορφή εικόνας στην οποία αποδίδονται οι σελίδες.

Όλα τα πεδία είναι προαιρετικά. Οι αρχικές τιμές της ενότητας «Δοκιμάστε το» — ανάλυση 150, περιστροφή 1, φωτεινότητα και αντίθεση 1.3 — είναι ο συνδυασμός που προτείνει η εφαρμογή ιστού, όχι οι προεπιλογές του API.

Χρήσιμα πεδία του αντικειμένου εργασίας

status
created / processing / completed / failed — καθορίζει αν υπάρχουν οι δύο παρακάτω διευθύνσεις.
uploadURL
Μόνο στην κατάσταση created. Προϋπογεγραμμένη διεύθυνση μεταφόρτωσης με ημερομηνία λήξης.
downloadURL
Μόνο στην κατάσταση completed. Προϋπογεγραμμένη διεύθυνση λήψης με ημερομηνία λήξης.
inputUploadedAt / completedAt
Πότε ολοκληρώθηκε η μεταφόρτωση του αρχείου και πότε ολοκληρώθηκε η εργασία. Η διαφορά τους είναι ο χρόνος επεξεργασίας.

Συχνές ερωτήσεις

Χρειάζεται Pro για σάρωση μέσω API;

Ναι. Χωρίς έγκυρο διακριτικό το API απαντά με 401, ενώ λογαριασμός χωρίς ρόλο Pro λαμβάνει 403. Αναβαθμίστε και συνδεθείτε για να δείτε το διακριτικό σε αυτή τη σελίδα.

Πώς ξέρω ότι ολοκληρώθηκε μια εργασία;

Με δύο τρόπους: ελέγχετε περιοδικά το GET /v1/scan-jobs/{jobID} ή δώστε webhookUrl κατά τη δημιουργία της εργασίας, ώστε η υπηρεσία να σας ειδοποιήσει μία φορά.

Είναι το αποτέλεσμα ίδιο με τη σάρωση στη σελίδα;

Ναι. Και οι δύο τρόποι χρησιμοποιούν την ίδια υλοποίηση εφέ σάρωσης. Η χρωματική λειτουργία, η ανάλυση, η περιστροφή, το θάμπωμα, ο θόρυβος, η φωτεινότητα, η αντίθεση και το περίγραμμα στο config αντιστοιχούν στις επιλογές της σελίδας με άλλα ονόματα. Οι ίδιες παράμετροι δίνουν το ίδιο αποτέλεσμα. Διαφέρει μόνο ο τόπος επεξεργασίας: τοπικά στη σελίδα, απομακρυσμένα μέσω API.

Μπορώ να αποθηκεύσω τις διευθύνσεις μεταφόρτωσης και λήψης για να τις ξαναχρησιμοποιήσω;

Καλύτερα όχι. Τα uploadURL και downloadURL είναι προϋπογεγραμμένες διευθύνσεις με περιορισμένη διάρκεια ισχύος. Όταν λήξουν, ανακτήστε ξανά την εργασία για να λάβετε νέες.

Πόσο διαρκεί μια εργασία;

Εξαρτάται από τον αριθμό σελίδων και την ανάλυση. Λίγες σελίδες συνήθως ολοκληρώνονται σε δευτερόλεπτα. Υψηλότερη ανάλυση ή μεγαλύτερα έγγραφα χρειάζονται περισσότερο χρόνο. Η διαφορά μεταξύ inputUploadedAt και completedAt είναι ο πραγματικός χρόνος επεξεργασίας.

Τι γίνεται αν αποτύχει μια εργασία;

Η κατάσταση γίνεται failed. Συνήθεις αιτίες είναι μη έγκυρο PDF, περιορισμοί κρυπτογράφησης ή διακοπή της μεταφόρτωσης. Ελέγξτε ότι το αρχείο ανοίγει και δημιουργήστε νέα εργασία.

Μπορώ να δω παλαιότερες εργασίες;

Ναι. Το GET /v1/scan-jobs εμφανίζει τις δικές σας εργασίες και δέχεται φίλτρα jobID, status και createdAfter για έλεγχο του ιστορικού ή επανάληψη λήψης.