Hvorfor teams bruger det i stedet for at bygge deres egen OCR

Almindelig OCR gør håndskrift til ren tekst. Scrivenos pipeline bevarer den egentlige struktur - ligninger forbliver ligninger, håndtegnede diagrammer og kemiske strukturer bliver fundet og taget med i stedet for at blive smidt væk, og én transskription danner grundlag for rigtig typesat LaTeX, en kompileret PDF og en redigerbar DOCX med ægte Word-ligninger - ikke tre separate eksporter, der hver gør sit bedste.

  • Asynkron indsendelse / status / download eller en webhook, når et job er færdigt
  • HMAC-signerede webhook-data med en idempotensnøgle, så nye forsøg er sikre
  • Output som PDF, DOCX, Markdown eller rå LaTeX fra samme forespørgsel
  • Gratis at tilmelde sig - betal kun 0,003 US$ pr. konverteret side, intet månedligt minimum

Opret en gratis konto og få din API-nøgle

Kom i gang

Send en fil, spørg efter status, og download derefter - samme pipeline som webappen bruger.

Send

curl -X POST https://api.scriveno.com/api/v1/convert \
  -H "Authorization: Bearer isk_live_YOUR_API_KEY" \
  -H "Idempotency-Key: <your-own-uuid>" \
  -F "file=@notes.pdf" \
  -F "webhookUrl=https://example.com/webhooks/scriveno"

Tjek status

curl https://api.scriveno.com/api/v1/convert/{jobId} \
  -H "Authorization: Bearer isk_live_YOUR_API_KEY"

Download

curl https://api.scriveno.com/api/v1/convert/{jobId}/download/pdf \
  -H "Authorization: Bearer isk_live_YOUR_API_KEY" \
  -o result.pdf

Vis dine job

curl "https://api.scriveno.com/api/v1/convert?page=1&pageSize=20" \
  -H "Authorization: Bearer isk_live_YOUR_API_KEY"

Annullér et job

curl -X POST https://api.scriveno.com/api/v1/convert/{jobId}/cancel \
  -H "Authorization: Bearer isk_live_YOUR_API_KEY"

Webhooks

Angiv en webhookUrl, når du sender, så POSTer Scriveno dette til den, når jobbet når completed, failed eller cancelled - du behøver ikke at spørge efter status, hvis du ikke vil.

POST <your webhookUrl>
Content-Type: application/json
X-Scriveno-Signature: sha256=<hex-encoded HMAC-SHA256 of the raw body below>
X-Scriveno-Timestamp: <unix seconds when this delivery was signed>
X-Scriveno-Signature-V2: sha256=<hex-encoded HMAC-SHA256 of "<timestamp>.<raw body>">

{
  "jobId": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
  "status": "completed",
  "totalPages": 3,
  "completedPages": 3,
  "errorMessage": null,
  "downloads": {
    "pdf": "https://api.scriveno.com/api/v1/convert/{jobId}/download/pdf",
    "docx": "https://api.scriveno.com/api/v1/convert/{jobId}/download/docx",
    "markdown": "https://api.scriveno.com/api/v1/convert/{jobId}/download/markdown",
    "latex": "https://api.scriveno.com/api/v1/convert/{jobId}/download/latex"
  }
}

Verificér signaturen, før du stoler på data - alle kan POSTe til dit endpoint. Beregn en HMAC-SHA256 af den præcise rå forespørgselskrop med din nøgles webhook-hemmelighed (vises én gang, når nøglen oprettes), hex-kod den, og sammenlign den med alt efter sha256= i headeren X-Scriveno-Signature med en sammenligning i konstant tid. Brug helst X-Scriveno-Signature-V2: den signerer også X-Scriveno-Timestamp, så du kan afvise en opsnappet levering, der sendes igen senere.

// pseudocode
ts = header["X-Scriveno-Timestamp"]
if abs(now_unix_seconds() - int(ts)) > 300: reject
expected = hex(hmac_sha256(webhookSecret, ts + "." + rawRequestBody))
received = header["X-Scriveno-Signature-V2"].removePrefix("sha256=")
if !constantTimeEquals(expected, received): reject