PDF scanné ou texte natif
Avant de lancer un OCR, encore faut-il savoir si votre PDF en a besoin. Cette capacité analyse le fichier et indique s’il s’agit d’un document scanné, fait d’images, ou d’un PDF au texte natif déjà sélectionnable. Elle distingue aussi les cas mixtes, page par page, pour vous éviter un traitement inutile.
Exécuter en ligne
Exécutez cette tâche sur nos serveurs, avec votre compte. Les outils gratuits tournent dans votre navigateur ; celui-ci est facturé sur votre solde KIT au prix affiché ci-dessus.
Image ou texte : la bonne question avant l’OCR
Deux PDF d’apparence identique peuvent être de nature opposée : l’un contient du vrai texte, sélectionnable et copiable ; l’autre n’est qu’une photo de page, où le texte n’est qu’un dessin. Un OCR n’a de sens que sur le second. La capacité tranche cette question en analysant le contenu réel du fichier, et vous dit lequel des deux vous avez en main, sans que vous ayez à l’ouvrir pour tenter de sélectionner du texte.
Le cas des PDF mixtes
Beaucoup de fichiers sont hybrides : quelques pages natives suivies d’annexes scannées, ou un document texte auquel on a ajouté une pièce photographiée. La capacité juge page par page et signale ces cas mixtes, plutôt que de coller une étiquette unique à tout le fichier. Vous savez alors précisément quelles pages relèvent d’un OCR et lesquelles portent déjà un texte exploitable tel quel.
Un contrôle rapide et peu coûteux
C’est une vérification, pas un traitement lourd : elle coûte $0.002 par requête, en dollars US, sans coût par page ni abonnement. L’intérêt est d’économiser en amont : n’envoyer à un OCR payant que les fichiers réellement scannés, et laisser passer sans frais ceux dont le texte est déjà là. La capacité s’utilise sur cette page ou par l’API, en traitement asynchrone, pour filtrer automatiquement un lot avant traitement.
Cas d’usage
Vérifier un lot avant OCR
Camille Moreau contrôle si un lot de PDF administratifs a besoin d’un OCR ou si leur texte est déjà sélectionnable, avant d’engager le moindre traitement.
Séparer factures textuelles et scans
Menuiserie Rousseau & Fils distingue les factures reçues en texte natif de celles qui ne sont que des scans, pour ne traiter que ce qui le nécessite.
Filtrer un flux automatiquement
Un service n’envoie à son OCR, via l’API, que les PDF réellement scannés, laissant passer sans frais ceux qui portent déjà un texte exploitable.
Questions fréquentes
Comment la capacité fait-elle la différence ?
Elle analyse le contenu réel du fichier : un PDF natif renferme une couche de texte, un PDF scanné ne contient que des images de pages. La capacité repère laquelle des deux est présente.
Que renvoie-t-elle pour un PDF mixte ?
Elle le signale comme tel et indique la nature page par page, plutôt que de trancher pour l’ensemble du document. Vous savez quelles pages sont scannées et lesquelles sont natives.
Pourquoi vérifier avant de lancer un OCR ?
Pour ne pas payer un OCR sur des pages qui portent déjà un texte exploitable. Ce contrôle, à $0.002 la requête, permet de n’engager le traitement lourd que là où il est utile.
Combien coûte cette vérification ?
$0.002 par requête, en dollars US, sans coût par page ni abonnement. Paiement par PayPal, facture sur demande.
Le fichier est-il conservé ?
Non. Le transfert est chiffré, le PDF n’est analysé que le temps du contrôle, puis supprimé. Rien n’est archivé et personne ne le consulte.
Y a-t-il une limite de taille ou de pages ?
Oui, jusqu’à 25 Mo et 10 pages par document.
Pour les développeurs — accès API
Tout sur cette page est disponible par programmation. Cette section s'adresse aux équipes qui veulent l'intégrer à leurs systèmes ; les autres peuvent simplement utiliser l'outil ci-dessus.
Endpoint
Authentification par jeton Bearer : un seul POST met la tâche en file d’attente, et le résultat vous parvient par webhook ou lien signé.
Appeler depuis votre 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)Exemple de requête
{
"input": "…"
}Exemple de réponse
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "ocr.scanned_or_native",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}L’API est asynchrone : chaque appel renvoie un task_id immédiatement, puis vous interrogez l’état à raison d’une requête par seconde.
Tarifs
Le prix est publié, sans tokens ni crédits. Une tâche qui échoue n’est pas facturée.
Limites
max_mb | 25 |
max_pages | 10 |
Erreurs
| HTTP | Code | Signification |
|---|---|---|
401 | unauthorized | Clé API absente ou invalide : vérifiez l’en-tête Authorization. |
402 | insufficient_balance | Solde insuffisant : rechargez votre compte pour lancer cette tâche. |
404 | unknown_type | Type de tâche inconnu : vérifiez le champ type de votre requête. |
429 | rate_limited | Trop de requêtes : ralentissez la cadence, puis réessayez. |
413 | input_too_large | Entrée trop volumineuse : consultez la limite de taille de cette capacité. |