E 'possibile estrarre il testo da pagina per Word / file PDF utilizzando Apache Tika?

StackOverflow https://stackoverflow.com/questions/5824867

  •  26-10-2019
  •  | 
  •  

Domanda

Tutta la documentazione posso trovare sembra suggerire posso estrarre solo il contenuto dell'intero file. Ma ho bisogno di estrarre le pagine singolarmente. Devo scrivere il mio parser per questo? C'è qualche metodo ovvio che mi manca?

È stato utile?

Soluzione

In realtà Tika fa pagine manico (almeno in pdf) con l'invio di elementi <div><p> prima pagina inizia e </p></div> dopo la fine della pagina. Si può facilmente configurare il numero di pagine nel vostro gestore di utilizzare questo (solo contando le pagine utilizzando solo <p>):

public abstract class MyContentHandler implements ContentHandler {
    private String pageTag = "p";
    protected int pageNumber = 0;
    ...
    @Override
    public void startElement (String uri, String localName, String qName, Attributes atts) throws SAXException  {  

        if (pageTag.equals(qName)) {
            startPage();
        }
    }

    @Override
    public void endElement (String uri, String localName, String qName) throws SAXException {  

        if (pageTag.equals(qName)) {
            endPage();
        }
    }

    protected void startPage() throws SAXException {
    pageNumber++;
    }

    protected void endPage() throws SAXException {
    return;
    }
    ...
}

Nel fare questo con il PDF Potreste incorrere nel problema quando parser non invia le righe di testo in modo corretto - vedi l'estrazione di testo da file PDF con Apache Tika 0.9 (e PDFBox sotto il cofano) su come gestire questa situazione.

Altri suggerimenti

Avrete bisogno di lavorare con le librerie di base -. Tika non fa nulla a livello di pagina

Per i file PDF, PDFBox dovrebbe essere in grado di darvi alcune cose pagina. Per Word, HWPF e XWPF da Apache POI in realtà non fare le cose a livello di pagina - le interruzioni di pagina non vengono memorizzati nel file, ma invece devono essere calcolati al volo in base al testo + font + dimensioni della pagina ...

È possibile ottenere il numero di pagine in un file PDF utilizzando il metadati chiave xmpTPg:NPages dell'oggetto come nell'esempio seguente:

Parser parser = new AutoDetectParser();
Metadata metadata = new Metadata();
ParseContext parseContext = new ParseContext();
parser.parse(fis, handler, metadata, parseContext);
metadata.get("xmpTPg:NPages");
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top