Leistung iText vs. PdfBox
Ich versuche ein pdf (mein Lieblings-Buch-Effektiv Java, wenn seine Materie), um text -, überprüfte ich die beiden iText und Apache PdfBox. Ich sehe einen wirklich großen Unterschied in der Leistung: Mit iText dauerte es 2:521, und mit PdfBox: 6:117.
Dies, wenn mein code für PdfBOx
PDFTextStripper stripper = new PDFTextStripper();
BUFFER.append(stripper.getText(PDDocument.load(pdf)));
- Und dies ist für iText
PdfReader reader = new PdfReader(pdf);
for (int i = 1; i <= reader.getNumberOfPages(); i++) {
BUFFER.append(PdfTextExtractor.getTextFromPage(reader, i));
}
Meine Frage ist, was die Leistung abhängig ist, ist es eine Möglichkeit, wie PdfBox schneller? Oder ausschließlich für die Verwendung von iText? Und können Sie erklären, mehr darüber, wie Strategien auf die Leistung auswirken?
Während sicherlich eine interessante Beobachtung, wie können wir Ihnen helfen?
Ich Stimme mit Elliott-Frisch: ich sehe keine Frage in deinem post. Beachten Sie auch, dass Sie müssen sicher sein, dass Sie Sie nicht vergleichen äpfel mit Birnen: PDF-Dateien erstellt werden können, in vielen verschiedene weisen. Ich bin kein PDFBox-Experte, aber ich schrieb iText und iText hat verschiedene Strategien zum analysieren von PDF. Einige Strategien sind schnell, andere langsam. Der resultierende text kann auch anders sein. In einer meiner Aufgaben für die Regierung, schrieb ich einen benchmark mit iText und nur der Unterschied in der Geschwindigkeit zwischen den Strategien war mehr als einen Faktor 100.
Meine Frage ist, was die Leistung abhängig ist, ist es eine Möglichkeit, wie PdfBox schneller? Oder ausschließlich für die Verwendung von iText? Und können Sie erklären, mehr darüber, wie Strategien auf die Leistung auswirken? Dank
In einer einzigen Datei benchmark fand ich, dass die folgenden Schnitte Extraktion-Zeit um die Hälfte (2sec->1sek). PDFTextStripper.setSuppressDuplicateOverlappingText(false); ich bin noch nicht sicher über die Auswirkungen auf die Genauigkeit.
Ich Stimme mit Elliott-Frisch: ich sehe keine Frage in deinem post. Beachten Sie auch, dass Sie müssen sicher sein, dass Sie Sie nicht vergleichen äpfel mit Birnen: PDF-Dateien erstellt werden können, in vielen verschiedene weisen. Ich bin kein PDFBox-Experte, aber ich schrieb iText und iText hat verschiedene Strategien zum analysieren von PDF. Einige Strategien sind schnell, andere langsam. Der resultierende text kann auch anders sein. In einer meiner Aufgaben für die Regierung, schrieb ich einen benchmark mit iText und nur der Unterschied in der Geschwindigkeit zwischen den Strategien war mehr als einen Faktor 100.
Meine Frage ist, was die Leistung abhängig ist, ist es eine Möglichkeit, wie PdfBox schneller? Oder ausschließlich für die Verwendung von iText? Und können Sie erklären, mehr darüber, wie Strategien auf die Leistung auswirken? Dank
In einer einzigen Datei benchmark fand ich, dass die folgenden Schnitte Extraktion-Zeit um die Hälfte (2sec->1sek). PDFTextStripper.setSuppressDuplicateOverlappingText(false); ich bin noch nicht sicher über die Auswirkungen auf die Genauigkeit.
InformationsquelleAutor meilechh | 2014-03-12
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ein wichtiger Unterschied ist, dass PDFBox immer Prozesse, text Glyphe ' durch die Glyphe während iText normalerweise verarbeitet es chunk (d.h. einzelne string-parameter von text-Zeichnung-Bedienung) für chunk; das reduziert die erforderlichen Ressourcen in iText sehr viel. Darüber hinaus wird die Ereignis-orientierte Architektur von iText text analysieren bedeutet eine geringere Belastung der Ressourcen als die von PDFBox. Und PDFBox hält Informationen, die nicht unbedingt erforderlich ist, für nur-text-Extraktion zur Verfügung, die für eine längere Zeit, kostet mehr Ressourcen.
Aber den Weg die Bibliotheken zunächst laden Sie das Dokument kann auch einen Unterschied machen. Hier können Sie ein wenig Experimentieren, PDFBox bietet nicht nur mehrere
PDDocument.load
überlastungen, aber auch einigePDDocument.loadNonSeq
überlastungen (eigentlichPDDocument.loadNonSeq
liest Dokumente korrekt, währendPDDocument.load
können ausgetrickst werden, zu interpretieren PDF-Dateien). Alle diese unterschiedlichen Varianten können unterschiedliche Laufzeitverhalten.iText bringt eine einfache und eine erweiterte text-Extraktion-Strategie. Die einfache man nimmt text auf der Seite Inhalts-stream zu erscheinen, in Leserichtung, während die fortschrittlicheren Arten. Standardmäßig ist die erweiterte verwendet. So, Sie können wahrscheinlich Geschwindigkeit bis iText auch einige mehr mit der einfachen Strategie. PDFBox immer sortiert.
PDDocument.load
Methode zu verwenden, beziehen sich auf die PDFBox 1.8.x-Architektur. Seit 2.0.0 ist die ehemalige korrektePDDocument.loadNonSeq
gewordenPDDocument.load
und die ehemalige falschePDDocument.load
fallen gelassen wurde.InformationsquelleAutor mkl
In der PDFBox - Version 2.0.12, Sie optimiert die PDFunctionType3.eval () - von 30%, reduziert sich der RAM-Anforderung von COSOutputStream, und auch entfernt intermediate streams beim Zusammenführen von Dateien. Alle diese Informationen werden in den jeweiligen Versionshinweisen. Bitte siehe den link unten für weitere Informationen:
https://issues.apache.org/jira/secure/ReleaseNote.jspa?version=12343489&styleName=Html&projectId=12310760&Create=Create&atl_token=A5KQ-2QAV-T4JA-FDED%7Cddb31610c9c60486ac6cc58a5800069ddf68ccd5%7Clout
InformationsquelleAutor Bhaskara Arani