Menu in testo
Hai la foto del menu di un ristorante e ti serve il testo: per tradurlo, ordinarlo su un sito, confrontare i prezzi o pubblicarlo online. Questa capacità legge l’immagine, riconosce le sezioni — antipasti, primi, dolci — con i piatti e i prezzi, e te li restituisce in una lista pulita e modificabile.
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.
Sezioni, piatti e prezzi, separati
Un menu non è solo testo: ha una struttura — sezioni, nomi dei piatti, descrizioni, prezzi — che la foto appiattisce. La capacità riconosce quell’ordine e lo ricostruisce: raggruppa i piatti sotto la loro sezione e affianca a ciascuno il prezzo. Invece di ricopiare voce per voce da un’immagine, ti ritrovi una lista già ordinata, pronta da incollare in un sito, in un foglio di calcolo o in un file da tradurre.
Digitalizzare, tradurre, confrontare
Serve a chi deve portare online la carta di un locale senza ribatterla, a chi gestisce più ristoranti e vuole uniformare i menu, o a chi in viaggio vuole capire un menu in un’altra lingua partendo dalla foto. Una volta che i piatti e i prezzi sono in testo, tradurli o aggiornarli diventa questione di minuti, non di un pomeriggio passato a copiare a mano.
Quanto costa e come funziona
La trascrizione costa $0.010 a richiesta più $0.0575 a immagine, in dollari, senza abbonamento. La capacità è in versione beta: la usi da questa pagina e, per trattare più foto insieme, anche via API. L’elaborazione è asincrona — carichi la foto, parte un’attività, il testo torna quando è pronto — ed è pensata per foto leggibili, con i prezzi ben visibili.
Casi d'uso
Portare la carta online
L’Osteria del Borgo di Verona digitalizza la carta partendo dalle foto scattate ai tavoli, per pubblicarla sul sito senza ribattere ogni piatto.
Capire un menu in viaggio
Chiara Romano fotografa il menu di un ristorante all’estero e ne ricava il testo per tradurlo e capire i piatti prima di ordinare.
Uniformare più menu
Alessandro Ferrari gestisce più locali ed estrae i menu in un foglio di calcolo, per confrontare piatti e prezzi in un unico elenco.
Domande frequenti
Riconosce i prezzi accanto a ogni piatto?
Sì. Associa a ciascun piatto il prezzo che gli sta vicino, così nella lista trovi voce e importo affiancati.
Va bene la foto scattata al tavolo?
Sì, purché il menu sia leggibile e ripreso il più possibile dritto. Foto storte, sfocate o con forti riflessi rendono la lettura meno precisa.
Traduce anche il menu?
No, qui si estrae il testo. La traduzione è un passaggio a parte: una volta che piatti e prezzi sono in testo, tradurli diventa semplice.
Quanto costa trascrivere un menu?
$0.010 a richiesta più $0.0575 a immagine, in dollari, senza abbonamento. Si paga con PayPal e la fattura è disponibile su richiesta.
Le foto restano da qualche parte?
No. La foto viaggia cifrata, viene elaborata solo per ricavarne il testo e poi cancellata. Non viene conservata né vista da nessuno.
Quanto può essere grande l’immagine?
Fino a 25 MB per foto.
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/menu \
-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/menu", {
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/menu",
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/menu", 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/menu", 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.menu",
"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. |