PDF scansionato o testo?
Un PDF può sembrare uguale in due casi molto diversi: uno ha testo vero, selezionabile e cercabile; l’altro è solo l’immagine di una scansione. Questa capacità controlla il file e ti dice a quale dei due appartiene, pagina per pagina, così sai se puoi copiare il testo direttamente o se serve prima passare per l’OCR.
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.
Due PDF identici, contenuti diversi
Aprendolo, un PDF scansionato e uno con testo vero si somigliano; ma nel primo le pagine sono immagini, nel secondo ci sono caratteri reali. Da questa differenza dipende tutto: dal primo non puoi copiare né cercare nulla senza OCR, dal secondo sì. La capacità analizza il file e ti dice, pagina per pagina, se contiene testo estraibile o soltanto immagini, togliendoti il dubbio prima ancora di provare.
Sapere quale strada prendere
Passare all’OCR un PDF che ha già il testo è tempo e denaro sprecati; provare a copiare da una scansione dà solo pagine vuote. Sapere in anticipo la natura del file evita entrambi gli errori. In un flusso che tratta molti documenti, questo controllo indirizza ogni PDF sulla strada giusta: testo estraibile direttamente, oppure scansione da mandare all’OCR. Un passo piccolo che fa risparmiare su tutti gli altri.
Prezzo a documento e come si usa
Il controllo costa $0.002 a documento, in dollari, senza abbonamento: paghi per file analizzato. Lo strumento è stabile e si usa da questa pagina; per smistare in automatico grandi quantità di PDF c’è l’API. L’elaborazione è asincrona: invii il file, parte un’attività e l’esito — testo o scansione, pagina per pagina — torna quando è pronto. Non serve un account: paghi al momento, con PayPal, senza abbonamento.
Casi d'uso
Filtrare prima dell’OCR
Un ufficio controlla i PDF in arrivo e manda all’OCR solo quelli che risultano scansioni, evitando di rielaborare inutilmente i documenti che hanno già il testo.
Capire un archivio ereditato
Lo Studio Commercialista Bianchi verifica quali PDF di un vecchio archivio sono testo estraibile e quali immagini, prima di decidere come trattarli.
Instradare i documenti in arrivo
Rossi & Figli S.r.l. smista i PDF ricevuti in base alla loro natura, indirizzando ognuno al passaggio giusto.
Domande frequenti
Distingue pagina per pagina?
Sì. Analizza ogni pagina, quindi riconosce anche i PDF misti, in cui alcune pagine hanno testo vero e altre sono scansioni.
Cosa dice se un PDF è misto?
Segnala l’esito pagina per pagina, indicando quali contengono testo estraibile e quali sono soltanto immagini.
Serve anche a fare l’OCR?
No. Questo controllo dice soltanto se l’OCR serve o no. L’estrazione del testo da una scansione è un passaggio a parte.
Quanto costa per documento?
$0.002 a documento, in dollari, senza abbonamento. Pagamento con PayPal, fattura su richiesta.
Il file viene conservato?
No. Il PDF viaggia cifrato, viene analizzato solo per stabilirne la natura e poi cancellato. Non resta nulla in archivio.
Quante pagine per file?
Fino a 10 pagine per documento, entro i 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/scanned-or-native \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"input":"…"}'const res = await fetch("https://api.kit.forhosting.com/ocr/scanned-or-native", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"input": "…"
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/ocr/scanned-or-native",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"input": "…"
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/ocr/scanned-or-native", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"input":"…"}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"input":"…"}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/ocr/scanned-or-native", 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
{
"input": "…"
}Esempio di risposta
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "ocr.scanned_or_native",
"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. |