2012-01-11 3 views
6

Stiamo facendo ricerche sull'estrazione di informazioni e vorremmo usare iText.Estrazione del testo PDF con iText

Siamo in procinto di esplorare iText. Secondo la letteratura che abbiamo recensito, iText è lo strumento migliore da usare. È possibile estrarre testo da pdf per riga in iText? Ho letto un post di domande qui in StackOverflow relativo al mio ma ha solo letto il testo per non estrarlo. Qualcuno può aiutarmi con il mio problema? Grazie.

+3

Non sono completamente chiaro su quello che stai facendo. Leggere il testo ed estrarre il testo sono generalmente la stessa cosa. iText non salverà il testo in un file, ma una volta che avrai il testo dovresti riuscire a farlo abbastanza facilmente. iText fa un ottimo lavoro di estrazione del testo purché sia ​​effettivamente testo (non contorni o bitmap). Durante la ricerca di questo sito cerca anche 'iTextSharp', che è la porta .Net di iText. Ha più domande/risposte e il codice è quasi completamente lo stesso per C#. –

risposta

3

iText consente di farlo, ma non vi è alcuna garanzia circa la granularità dei blocchi di testo, quelli dipendono dagli effettivi renderizzatori di PDF utilizzati nella produzione dei documenti.

È possibile che ogni parola o lettera abbia il proprio blocco di testo. Né questi devono essere in ordine lessicale, per risultati affidabili potrebbe essere necessario riordinare blocchi di testo in base alle loro coordinate. Potrebbe anche essere necessario calcolare se è necessario inserire spazi tra i blocchi di testo.

13

come Theodore detto che si può estrarre il testo da un PDF e come Chris rilevare

fintanto che è in realtà il testo (senza contorni o bitmap)

miglior cosa da fare è acquistare Il libro di Bruno Lowagie Itext in action. Nella seconda edizione il capitolo 15 tratta l'estrazione del testo.

Ma si può guardare il suo sito per gli esempi. http://itextpdf.com/examples/iia.php?id=279

E puoi analizzarlo per creare un semplice file txt. Ecco un esempio di codice:

/* 
* This class is part of the book "iText in Action - 2nd Edition" 
* written by Bruno Lowagie (ISBN: 9781935182610) 
* For more info, go to: http://itextpdf.com/examples/ 
* This example only works with the AGPL version of iText. 
*/ 

package part4.chapter15; 

import java.io.FileOutputStream; 
import java.io.IOException; 
import java.io.PrintWriter; 

import com.itextpdf.text.pdf.PdfReader; 
import com.itextpdf.text.pdf.parser.PdfReaderContentParser; 
import com.itextpdf.text.pdf.parser.SimpleTextExtractionStrategy; 
import com.itextpdf.text.pdf.parser.TextExtractionStrategy; 

public class ExtractPageContent { 

    /** The original PDF that will be parsed. */ 
    public static final String PREFACE = "resources/pdfs/preface.pdf"; 
    /** The resulting text file. */ 
    public static final String RESULT = "results/part4/chapter15/preface.txt"; 

    /** 
    * Parses a PDF to a plain text file. 
    * @param pdf the original PDF 
    * @param txt the resulting text 
    * @throws IOException 
    */ 
    public void parsePdf(String pdf, String txt) throws IOException { 
     PdfReader reader = new PdfReader(pdf); 
     PdfReaderContentParser parser = new PdfReaderContentParser(reader); 
     PrintWriter out = new PrintWriter(new FileOutputStream(txt)); 
     TextExtractionStrategy strategy; 
     for (int i = 1; i <= reader.getNumberOfPages(); i++) { 
      strategy = parser.processContent(i, new SimpleTextExtractionStrategy()); 
      out.println(strategy.getResultantText()); 
     } 
     reader.close(); 
     out.flush(); 
     out.close(); 
    } 

    /** 
    * Main method. 
    * @param args no arguments needed 
    * @throws IOException 
    */ 
    public static void main(String[] args) throws IOException { 
     new ExtractPageContent().parsePdf(PREFACE, RESULT); 
    } 
} 

Avviso della licenza

Questo esempio funziona solo con la versione AGPL di iText.

Se guardi gli altri esempi mostrerà come tralasciare parti del testo o come estrarre parti del pdf.

Spero che aiuti.