Da documento a JSON
Indichi che cosa le serve, per esempio numero di fattura e importo dovuto, e qualsiasi documento torna esattamente in quella struttura, qualunque sia l’impaginazione. Ciò che il documento non contiene resta vuoto invece di essere inventato.
Esegui online
Esegui questo sui nostri server con il tuo account. Gli strumenti gratuiti girano nel tuo browser; questo viene addebitato sul tuo saldo KIT al prezzo indicato sopra.
Ti serve non il testo di un documento, ma i suoi dati in un formato che un programma sappia leggere.
Perché il semplice riconoscimento del testo non basta
Il riconoscimento del testo tradizionale dice quali caratteri ci sono su una pagina. Non sa che il terzo numero in alto a destra è il totale della fattura, né che il paragrafo sotto Data di decorrenza è la data che serve al suo gestionale dei contratti. Per anni si è colmata questa lacuna con regole tarate su un’unica impaginazione, che si rompono appena un fornitore cambia modello. Qui la logica si capovolge: invece di insegnare un’impaginazione, lei descrive com’è una buona risposta, con nome e tipo di ogni voce, e lo strumento cerca proprio quei dati ovunque si trovino sulla pagina.
Quando usarlo e a cosa fare attenzione
È adatto a flussi con decine di impaginazioni di fornitori, modelli di contratto che cambiano nel tempo o varianti scritte a mano, come un ambulatorio che trasferisce i dati anagrafici e assicurativi dei pazienti da moduli di accettazione compilati a mano ai punti esatti della cartella clinica. La struttura può essere un breve elenco, come numero di fattura e importo dovuto, oppure su più livelli, con righe che hanno i propri dettagli. Un errore comune è considerare un vuoto un guasto: se il documento non contiene un dato, la voce resta vuota o segnalata, senza tirare a indovinare. Con struttura e istruzione insieme, vale la struttura.
Non testo sfuso, ma campi
L’OCR normale ti dà il testo così com’è, in blocco. Qui il risultato è diverso: la capacità riconosce che cosa è ogni pezzo — il numero della fattura, la data, la partita IVA, gli importi, le righe di una tabella — e li mette in campi con un nome. Al posto di un muro di testo ricevi una struttura ordinata, dove ogni valore è già al suo posto e pronto da usare, senza ritagliarlo a mano.
Casi d'uso
Moduli compilati in record
Uno sportello trasforma i moduli cartacei in record ordinati, così ogni campo compilato entra nel sistema senza trascrizione manuale.
Domande frequenti
In che formato tornano i dati?
È il formato che quasi ogni linguaggio e gestionale sa leggere senza conversioni.
Posso decidere quali campi estrarre?
La capacità riconosce i campi tipici del documento (per una fattura: numero, data, partita IVA, imponibile, IVA, totale). Per esigenze particolari conviene partire da questi e adattare a valle.
Funziona con le fatture italiane?
Sì. Riconosce gli elementi tipici, come partita IVA, imponibile, IVA al 22% e totale, restituendoli in campi separati.
I documenti restano sui vostri server?
No. Il file viaggia cifrato, viene elaborato solo per estrarne i dati e poi cancellato. Nessuna copia resta in archivio.
Quante pagine per file?
Fino a 10 pagine per documento, entro i 25 MB di peso.
Strumenti correlati
Per sviluppatori — accesso via API
Tutto quello che vedi in questa pagina è disponibile anche via API. Questa sezione è per i team che vogliono integrarlo nei propri sistemi; chi non ne ha bisogno può semplicemente usare lo strumento qui sopra.
Endpoint
Autenticazione con Bearer token: un POST mette in coda l'attività e il risultato arriva via webhook o link firmato.
Chiamala dal tuo stack
curl -X POST https://api.kit.forhosting.com/ocr/to-json \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"image":"https://ejemplo.com/imagen.jpg"}'const res = await fetch("https://api.kit.forhosting.com/ocr/to-json", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"image": "https://ejemplo.com/imagen.jpg"
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/ocr/to-json",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"image": "https://ejemplo.com/imagen.jpg"
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/ocr/to-json", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"image":"https://ejemplo.com/imagen.jpg"}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"image":"https://ejemplo.com/imagen.jpg"}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/ocr/to-json", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)Esempio di richiesta
{
"image": "https://ejemplo.com/imagen.jpg"
}Esempio di risposta
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "ocr.to_json",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}L'API è asincrona: ricevi subito un task_id e puoi fare polling fino a 1 richiesta al secondo.
Prezzi
Prezzo pubblicato, senza token né crediti. Se l'attività fallisce, non paghi.
Limiti
max_mb | 25 |
max_pages | 10 |
Errori
| HTTP | Codice | Significato |
|---|---|---|
401 | unauthorized | Chiave API mancante o non valida: controlla l'header Authorization. |
402 | insufficient_balance | Credito esaurito: ricarica per continuare a eseguire attività. |
404 | unknown_type | Tipo di attività sconosciuto: controlla il campo type della richiesta. |
429 | rate_limited | Troppe richieste in poco tempo: rallenta e riprova tra qualche secondo. |
413 | input_too_large | Il file o il testo inviato supera il limite di questo strumento. |
422 | task_failed | L'attività non è andata a buon fine: non ti viene addebitato nulla. |
Note tecniche
Questa capacità legge la pagina — una fattura, un modulo, una tabella — riconosce i campi (numero, data, importi, righe) e te li restituisce in JSON strutturato, pronto da inserire in un gestionale.
Pensato per essere elaborato
È la base per automatizzare l’ingresso dei documenti: una fattura scansionata diventa una riga in contabilità, un modulo compilato diventa un record, senza che qualcuno ribatta i campi guardando il PDF. Il JSON è il formato che quasi ogni programma sa leggere. Ricevere i dati di un documento già in JSON significa poterli caricare in un gestionale, in un database o in un foglio di calcolo senza passaggi manuali.
Prezzo a pagina e come si usa
L’estrazione costa $0.010 a richiesta più $0.0575 a pagina, in dollari, senza abbonamento: paghi le pagine che elabori. Lo strumento è stabile e si usa da questa pagina, dove vedi subito il JSON; per un flusso continuo di documenti c’è l’API, e presto anche altri canali. L’elaborazione è asincrona: invii la pagina, parte un’attività e il JSON torna quando è pronto.
Casi di integrazione
Fatture in contabilità senza ribattere
Rossi & Figli S.r.l. converte le fatture scansionate in JSON per caricarle nel gestionale, invece di ribattere numero, data e importi a mano.
Tabelle di un report in dati
Alessandro Ferrari estrae la tabella di un report in JSON per rielaborarne i valori in un foglio di calcolo.
Domande tecniche
Quanto costa a pagina?
$0.010 a richiesta più $0.0575 a pagina, in dollari, senza abbonamento. Pagamento con PayPal, fattura su richiesta.