Extrayez le texte PDF d'une plage de pages
Extrayez le texte d'une plage de pages PDF lorsque vous disposez déjà d'un bloc de texte par page et ne souhaitez traiter qu'une section.
Lancer gratuitement
Fournissez les blocs dans l'ordre, la première page et la dernière. La capacité vérifie la plage numérotée à partir de un par rapport au nombre total de pages, inclut les deux bornes et assemble le texte choisi avec un repère de saut de page visible. Elle convient aux rapports, contrats, manuels et autres documents longs dont le traitement suivant ne doit recevoir qu'un extrait ciblé.
Fournissez les pages ordonnées et une plage inclusive
Commencez par le texte produit pour chaque page par un extracteur PDF ou un processus OCR. Placez les objets dans l'ordre du document d'origine, y compris les pages dont le texte extrait est une chaîne vide. Indiquez ensuite start_page et end_page avec une numérotation commençant à un. Les deux bornes sont incluses : une plage de 3 à 5 renvoie les troisième, quatrième et cinquième blocs. Il faut conserver les pages vides, car leur suppression décalerait tous les numéros suivants. Chaque page doit être un objet contenant une chaîne text ; les valeurs manquantes ou d'un autre type sont refusées. L'entrée accepte jusqu'à dix mille blocs. Cette capacité n'ouvre ni ne décode le fichier PDF. Elle sélectionne du texte par page obtenu auparavant, ce qui rend l'opération explicite, prévisible et simple à contrôler.
Maîtrisez la validation et les limites de page
Les plages commencent à un, incluent leurs bornes et font l'objet d'une validation stricte. Le début et la fin doivent être des entiers au moins égaux à un, et le début ne peut pas suivre la fin. Aucune borne ne peut dépasser le nombre de blocs fournis. Si un document compte trois pages et que la plage se termine à quatre, la requête renvoie une erreur d'entrée invalide plutôt qu'un résultat partiel. Ce comportement révèle les écarts entre métadonnées, sélection et extraction. Les chaînes retenues sont assemblées avec un repère stable entouré de lignes vides, sans modification ni interprétation du texte. Une plage d'une page ne comporte aucun séparateur. La sortie précise aussi le nombre retenu et répète les bornes acceptées. Aucun réseau, hasard, horloge, modèle de langage ou mécanisme d'inférence n'intervient : une entrée identique produit toujours la même sortie.
Intégrez le résultat à des flux documentaires ciblés
La sélection est particulièrement utile entre une extraction qui conserve les pages et un consommateur qui ne doit pas recevoir le document entier. Un flux contractuel peut isoler les annexes avant l'analyse des clauses, une chaîne financière ne garder que le commentaire de gestion d'un rapport, et un service d'assistance indexer un chapitre de manuel. Puisque l'entrée est du texte et non un PDF binaire, la capacité s'associe aussi bien à l'OCR des fichiers numérisés qu'à l'extraction standard des fichiers numériques. Conservez la liste d'origine jusqu'à la validation et enregistrez les bornes retournées si la traçabilité est importante. Le repère peut servir aux citations ou être séparé ultérieurement. L'outil ne résume, ne corrige, ne classe et ne normalise pas le contenu : ces transformations relèvent d'étapes distinctes, tandis que cette opération reste déterministe et reproductible.
Cas d’usage
Isolez une section de rapport
Sélectionnez les pages exactes du commentaire de gestion avant d'envoyer le texte à une analyse ou une comparaison.
Acheminez les annexes contractuelles
Extrayez uniquement la plage inclusive contenant une annexe et conservez les limites pour la révision.
Indexez un chapitre de manuel
Choisissez un chapitre dans le texte paginé et transmettez cet extrait au moteur de recherche ou à l'assistance.
Questions fréquentes
Les pages de début et de fin sont-elles incluses ?
Oui. La plage est inclusive : les pages 2 à 4 renvoient donc trois blocs de texte.
Que se passe-t-il si la plage dépasse le document ?
La requête renvoie une erreur d'entrée invalide dès qu'une borne dépasse le nombre de pages fourni.
Cette capacité lit-elle un fichier PDF ?
Non. Elle reçoit du texte ordonné par page, déjà extrait auparavant d'un PDF.
Comment les pages retenues sont-elles séparées ?
Les chaînes voisines sont réunies par un repère stable de saut de page entouré de lignes vides.
Combien coûte une requête ?
Le tarif de l'API est de $0.002 par requête. L'exécution déterministe dans le navigateur est gratuite sur cette page.
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/pdf/text-extract-by-page-range \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"pages":[{"text":"Cover page"},{"text":"Executive summary\nRevenue increased."},{"text":"Risk analysis\nSupply remains constrained."},{"text":"Appendix"}],"start_page":2,"end_page":3}'const res = await fetch("https://api.kit.forhosting.com/pdf/text-extract-by-page-range", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"pages": [
{
"text": "Cover page"
},
{
"text": "Executive summary\nRevenue increased."
},
{
"text": "Risk analysis\nSupply remains constrained."
},
{
"text": "Appendix"
}
],
"start_page": 2,
"end_page": 3
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/pdf/text-extract-by-page-range",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"pages": [
{
"text": "Cover page"
},
{
"text": "Executive summary\nRevenue increased."
},
{
"text": "Risk analysis\nSupply remains constrained."
},
{
"text": "Appendix"
}
],
"start_page": 2,
"end_page": 3
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/pdf/text-extract-by-page-range", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"pages":[{"text":"Cover page"},{"text":"Executive summary\\nRevenue increased."},{"text":"Risk analysis\\nSupply remains constrained."},{"text":"Appendix"}],"start_page":2,"end_page":3}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"pages":[{"text":"Cover page"},{"text":"Executive summary\nRevenue increased."},{"text":"Risk analysis\nSupply remains constrained."},{"text":"Appendix"}],"start_page":2,"end_page":3}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/pdf/text-extract-by-page-range", 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
{
"pages": [
{
"text": "Cover page"
},
{
"text": "Executive summary\nRevenue increased."
},
{
"text": "Risk analysis\nSupply remains constrained."
},
{
"text": "Appendix"
}
],
"start_page": 2,
"end_page": 3
}Exemple de réponse
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "pdf.text_extract_by_page_range",
"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 | 200 |
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. |