Extraia texto de PDF por intervalo de páginas
Extraia texto de PDF por intervalo quando já houver um bloco de texto para cada página e somente uma seção específica for necessária.
Executar grátis
Informe os blocos ordenados, a primeira página e a última. A capacidade valida o intervalo com numeração iniciada em um, confere o total de páginas, inclui as duas extremidades e une o texto escolhido na ordem com um marcador visível de quebra de página. Ela é indicada para relatórios, contratos, manuais e documentos longos cujo processamento posterior deve receber um trecho preciso, não o arquivo inteiro.
Forneça o texto ordenado e um intervalo inclusivo
Comece com o texto que um extrator de PDF ou processo OCR gerou para cada página. Coloque os objetos na mesma ordem do documento original, inclusive páginas cujo texto extraído seja uma string vazia. Depois defina start_page e end_page com numeração iniciada em um. As duas extremidades são incluídas: de 3 a 5, retornam o terceiro, o quarto e o quinto blocos. Manter páginas vazias é importante, pois removê-las deslocaria toda a numeração posterior. Cada página deve ser um objeto com uma string text; valores ausentes ou de outro tipo são rejeitados. A entrada aceita até dez mil blocos. A capacidade não abre nem decodifica o PDF. Ela trabalha com o texto por página produzido em uma etapa anterior, deixando a seleção explícita, estável e fácil de auditar.
Entenda a validação e os limites das páginas
Os intervalos usam numeração iniciada em um, incluem as extremidades e passam por validação rigorosa. Início e fim devem ser inteiros iguais ou superiores a um, e o início não pode vir depois do fim. Nenhuma extremidade pode exceder a quantidade de blocos recebidos. Se um documento tiver três páginas e o intervalo terminar na quarta, a solicitação retorna erro de entrada inválida, não um resultado parcial. Isso revela divergências entre metadados, seleção e extração. Os textos escolhidos são unidos por um marcador estável entre linhas em branco, sem cortes ou interpretação. Uma única página não gera separador. A saída informa a quantidade selecionada e repete os limites aceitos. Rede, aleatoriedade, relógio, modelos de linguagem e inferência não participam do cálculo; entradas idênticas sempre geram saídas idênticas.
Use o resultado em fluxos documentais direcionados
A seleção é especialmente útil entre uma etapa de extração que mantém as páginas e um consumidor que não deve receber o documento completo. Um fluxo contratual pode isolar anexos antes da análise de cláusulas; uma rotina financeira pode guardar apenas a discussão gerencial de um relatório; e um sistema de suporte pode indexar um capítulo do manual. Como a entrada é texto, não um PDF binário, a capacidade combina com OCR para arquivos digitalizados e com extração comum para arquivos digitais. Preserve a lista original até a validação e registre os limites retornados quando houver exigência de auditoria. O marcador pode ser mantido para citações ou separado mais tarde. A ferramenta não resume, corrige, classifica nem normaliza o conteúdo: essas transformações ficam em etapas próprias, enquanto esta operação continua determinística e reproduzível.
Casos de uso
Isole uma seção do relatório
Selecione as páginas exatas com comentários gerenciais antes de enviar o texto para análise ou comparação.
Encaminhe anexos contratuais
Extraia somente o intervalo inclusivo que contém um anexo e preserve os limites das páginas para revisão.
Indexe um capítulo do manual
Escolha um capítulo do texto por página e envie o resultado focado à busca ou ao atendimento.
Perguntas frequentes
As páginas inicial e final são incluídas?
Sim. O intervalo é inclusivo; portanto, das páginas 2 a 4 são retornados três blocos de texto.
O que ocorre quando o intervalo excede o documento?
A solicitação retorna erro de entrada inválida se uma extremidade superar a quantidade de páginas recebida.
Esta capacidade lê um arquivo PDF?
Não. Ela recebe texto ordenado por página que já foi extraído previamente de um PDF.
Como as páginas selecionadas são separadas?
Strings de páginas vizinhas são unidas por um marcador estável de quebra, cercado por linhas em branco.
Qual é o preço de uma solicitação?
O preço da API é US$ 0,002 por solicitação. A execução determinística no navegador é gratuita na página da capacidade.
Para desenvolvedores — acesso via API
Tudo nesta página está disponível via API. Esta seção é para equipes que querem integrar a ferramenta aos próprios sistemas; quem não precisa disso pode simplesmente usar a ferramenta acima.
Endpoint
Autenticação por token Bearer. Um único POST coloca a tarefa na fila; o resultado chega por webhook ou link assinado.
Chame do seu código
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)Exemplo de requisição
{
"pages": [
{
"text": "Cover page"
},
{
"text": "Executive summary\nRevenue increased."
},
{
"text": "Risk analysis\nSupply remains constrained."
},
{
"text": "Appendix"
}
],
"start_page": 2,
"end_page": 3
}Exemplo de resposta
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "pdf.text_extract_by_page_range",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}A API é assíncrona: cada chamada devolve um task_id na hora. Se preferir polling, consulte o status a até 1 requisição por segundo.
Preço
Preço publicado, sem tokens nem créditos escondidos. Tarefa que falha não é cobrada.
Limites
max_mb | 25 |
max_pages | 200 |
Erros
| HTTP | Código | O que significa |
|---|---|---|
401 | unauthorized | Token ausente ou inválido. Confira o header Authorization. |
402 | insufficient_balance | Saldo insuficiente para esta tarefa. Faça uma recarga e tente de novo. |
404 | unknown_type | Esse tipo de tarefa não existe. Confira o campo type no catálogo. |
429 | rate_limited | Muitas requisições em pouco tempo. Espere um instante e tente de novo. |