Estragga il testo dalle pagine PDF e lo unisca in ordine
Due testi di pagina, un rapporto trimestrale e il suo allegato, diventano un solo documento con il separatore --- PAGE BREAK --- tra i due, nell'ordine fornito e senza riscrivere nulla. Utile dopo un lettore di testo o un OCR. Gratis nel suo browser.
- Gratis
- Funziona nel suo browser
- Senza registrazione
- I suoi dati restano sul dispositivo
Esegui gratis nel browser
Trasformi blocchi di testo separati per pagina in un’unica stringa prevedibile senza perdere i confini del documento. Fornisca nell’ordine il testo già estratto da ogni pagina e la capacità inserirà un marcatore chiaro tra i blocchi. Non esegue OCR e non scarica né analizza file PDF. Completa invece i flussi che producono già un blocco per pagina e richiedono un risultato stabile, ricercabile o esportabile.
Prepari i blocchi nell’ordine corretto
Invii un array pages con almeno un oggetto e inserisca il testo estratto da ogni pagina PDF nel relativo campo text. La posizione nell’array stabilisce l’ordine: il primo record è la prima pagina, il secondo è la seconda e così via. La capacità non riordina, non deduce numeri di pagina e non esamina il PDF, perché potrebbe modificare silenziosamente la sequenza già fissata dall’estrattore precedente.
Ogni valore text può includere titoli, paragrafi, righe vuote, caratteri Unicode o una stringa vuota quando una pagina reale non contiene testo estraibile. La pagina vuota è accettata e la sua posizione rimane visibile tramite i marcatori circostanti. Ogni elemento deve comunque essere un oggetto con un campo text di tipo stringa; valori mancanti, numeri, array annidati e altre forme vengono rifiutati.
Questo formato rigoroso evita conversioni accidentali. Per ogni richiesta sono ammessi al massimo 10000 blocchi.
Comprenda il risultato unito
Il campo text contiene le stringhe originali esattamente nell’ordine ricevuto. Tra ogni coppia adiacente, l’algoritmo inserisce due ritorni a capo, il marcatore --- PAGE BREAK --- e altri due ritorni. A parte l’inserimento dei separatori, l’algoritmo non taglia, normalizza, ridispone, interpreta o riscrive il contenuto.
Spazi iniziali, ritorni finali, righe vuote ripetute, punteggiatura e scritture non latine restano invariati. È una scelta intenzionale: l’assemblaggio deve preservare il materiale estratto. Se in seguito desidera testo ripulito, applichi una normalizzazione separata ed esplicita.
Per dividere nuovamente il risultato, utilizzi il marcatore restituito con i ritorni a capo.
Lo inserisca in un flusso PDF
Usi questa capacità dopo che un lettore del livello testuale, un sistema OCR, un analizzatore di documenti o un flusso di caricamento ha prodotto un blocco per pagina. È utile quando il sistema seguente richiede un’unica stringa, ma revisori, ricerca o citazioni necessitano ancora di confini visibili. Un indice può unire le pagine conservando i punti in cui cambia il contesto.
Un archivio può memorizzare una rappresentazione testuale stabile accanto al documento sorgente. Un processo linguistico può ricevere il testo completo senza imparare a percorrere array. Lo stesso input produce sempre lo stesso output.
La qualità dipende dall’estrazione precedente; colonne disordinate, glifi mancanti o pagine composte da immagini devono essere corretti a monte.
Casi d'uso
Preparare il testo per la ricerca
Unisca i risultati delle pagine in una stringa indicizzabile mantenendo confini espliciti per la verifica.
Assemblare i risultati OCR
Riunisca pagine riconosciute separatamente affinché riassunto o classificazione ricevano un documento ordinato.
Creare un testo di archivio
Conservi una rappresentazione testuale deterministica accanto al PDF, mantenendo visibili i passaggi di pagina.
Domande frequenti
Questa capacità legge un file PDF?
No. Riceve blocchi già estratti da singole pagine ed esegue soltanto il loro assemblaggio ordinato.
Una pagina può contenere una stringa vuota?
Sì. Rappresenta una pagina priva di testo estratto e ne conserva la posizione originale tra i confini.
Che cosa separa una pagina dalla successiva nel risultato?
Due a capo, il separatore --- PAGE BREAK --- e altri due a capo. Nulla viene aggiunto prima della prima pagina né dopo l'ultima, quindi il testo inizia e finisce esattamente come lo ha fornito.
Ripulisce gli spazi o gli a capo del mio testo?
No. Spazi iniziali, a capo finali, righe vuote ripetute, punteggiatura e scritture non latine restano come sono. Se desidera un testo pulito, applichi poi una normalizzazione separata ed esplicita.
Posso dividere di nuovo il testo unito in pagine?
Sì: divida in corrispondenza del separatore insieme agli a capo che lo circondano. Tenga presente che lo stesso testo letterale potrebbe già comparire dentro una pagina, quindi conviene verificarlo prima.
Strumenti correlati
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/pdf/extract-text \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"pages":[{"text":"Quarterly report\nRevenue increased by 12%."},{"text":"Appendix\nFigures are unaudited."}]}'const res = await fetch("https://api.kit.forhosting.com/pdf/extract-text", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"pages": [
{
"text": "Quarterly report\nRevenue increased by 12%."
},
{
"text": "Appendix\nFigures are unaudited."
}
]
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/pdf/extract-text",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"pages": [
{
"text": "Quarterly report\nRevenue increased by 12%."
},
{
"text": "Appendix\nFigures are unaudited."
}
]
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/pdf/extract-text", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"pages":[{"text":"Quarterly report\\nRevenue increased by 12%."},{"text":"Appendix\\nFigures are unaudited."}]}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"pages":[{"text":"Quarterly report\nRevenue increased by 12%."},{"text":"Appendix\nFigures are unaudited."}]}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/pdf/extract-text", 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
{
"pages": [
{
"text": "Quarterly report\nRevenue increased by 12%."
},
{
"text": "Appendix\nFigures are unaudited."
}
]
}Esempio di risposta
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "pdf.extract_text",
"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 | 200 |
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. |
Note tecniche
Comprenda il risultato unito
La risposta restituisce text, pages e page_break_marker. Non aggiunge alcun marcatore prima della prima pagina o dopo l’ultima. pages indica quanti blocchi sono stati uniti, mentre page_break_marker rende riconoscibile il delimitatore al codice successivo.
Lo inserisca in un flusso PDF
L’elaborazione è deterministica e locale al JSON fornito: non usa rete, casualità, ora corrente, OCR o decodifica PDF. Le richieste automatizzate costano $0.002.
Domande tecniche
Quale marcatore separa le pagine?
Inserisce --- PAGE BREAK --- circondato da due ritorni a capo per lato e lo restituisce in page_break_marker.
Che cosa accade se non invio pagine?
La richiesta fallisce con invalid_input perché è obbligatorio almeno un blocco di pagina.
Quanto costa una richiesta?
Le richieste automatizzate usano il prezzo base pubblicato di $0.002, senza supplementi per pagina.