OCR di grafici
Hai un grafico in immagine — la schermata di un report, l’istogramma di una presentazione, una curva presa da un PDF — ma non i numeri che ci stanno dietro. Questa capacità legge il tracciato, riconosce gli assi e le serie e ti rende i valori in tabella, pronti da ricalcolare o confrontare.
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.
Assi, serie e valori
Un grafico racchiude un’informazione numerica che l’occhio legge male: il valore esatto di un punto, la distanza fra due barre, la pendenza di una curva. La capacità riconosce gli assi e le loro tacche, individua le serie rappresentate e ricostruisce i valori punto per punto. Al posto di un’immagine ti ritrovi una tabella su cui lavorare, senza riposizionare ogni riferimento a mano né ridisegnare il grafico in un foglio di calcolo.
Quando il file di origine non c’è più
Il caso più frequente: un istogramma compare in un report o in una slide, ma il file dei dati originali è introvabile. Invece di stimare a occhio ogni valore, affidi l’immagine alla capacità, che ne estrae i numeri. È utile per riprendere un grafico già pubblicato, mettere a confronto due periodi o controllare un ordine di grandezza prima di citarlo altrove.
Prezzo a immagine e come si usa
L’estrazione costa $0.010 a richiesta più $0.0575 a immagine, in dollari, senza abbonamento: paghi solo quello che elabori. La capacità è in versione beta e si usa direttamente da questa pagina; è disponibile anche via API per elaborare una serie di immagini, con l’arrivo previsto su app per telefono. L’elaborazione è asincrona: carichi l’immagine, parte un’attività e i valori tornano quando l’analisi è pronta.
Casi d'uso
Riprendere un istogramma da un report
Lo Studio Commercialista Bianchi di Bologna recupera i numeri di un istogramma finito in un report cliente, di cui il file di origine è andato perso, per riportarli in una nuova presentazione.
Controllare un ordine di grandezza
Marco Rossi estrae i valori di una curva pubblicata in un documento per verificarne l’andamento prima di citarla in una nota interna.
Confrontare due periodi
Giulia Bianchi ricava i dati da due grafici diversi per affiancarli nella stessa tabella e misurare lo scarto da un anno all’altro.
Domande frequenti
Che tipi di grafici riesce a leggere?
I più comuni: istogrammi, curve, grafici a torta e a dispersione. La lettura è tanto più fedele quanto più gli assi sono graduati e i valori sono annotati sul tracciato.
I valori sono esatti al numero?
Quando il grafico mostra le sue etichette, i valori vengono ripresi così come sono. Senza etichette la capacità li stima in base alle tacche degli assi: il risultato è fedele ma resta una lettura, da ricontrollare per un uso delicato.
E se il grafico non ha le etichette dei valori?
La lettura si appoggia allora alla scala degli assi per stimare ogni punto. Più le tacche sono nette e regolari, più la stima è vicina al vero.
Quanto costa un’estrazione?
$0.010 a richiesta più $0.0575 a immagine, in dollari. Nessun abbonamento: paghi a immagine elaborata. Si paga con PayPal e la fattura è disponibile su richiesta.
Le mie immagini vengono conservate?
No. Il trasferimento è cifrato, l’immagine viene elaborata solo il tempo di estrarne i valori e poi cancellata. Niente resta in archivio e nessuna persona guarda il tuo file.
Posso usarlo dal telefono?
Sì. Funziona nel browser del telefono, senza app da installare; l’immagine può pesare fino a 25 MB.
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/chart \
-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/chart", {
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/chart",
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/chart", 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/chart", 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.chart",
"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. |
422 | task_failed | L'attività non è andata a buon fine: non ti viene addebitato nulla. |