Ich baue eine clientseitige Anwendung, die Pdf.js verwendet den Inhalt einer ausgewählten PDF-Datei zu analysieren, und ich laufe in eine seltsame Frage .Pdf.js gibt Textinhalte des gesamten Dokuments als jede textcontent Seite
Alles scheint gut zu funktionieren. Der Code lädt das PDF.js-PDF-Objekt erfolgreich, das dann die Seiten des Dokuments durchläuft und dann den Textinhalt für jede Seite abruft.
Nachdem ich den Code unten ausgeführt habe und die Daten in Browser-Tools überprüfen, bemerke ich, dass das textContent-Objekt jeder Seite den Text des gesamten Dokuments enthält und nicht nur den Text von der zugehörigen Seite.
Hat jemand das schon erlebt?
Ich zog (und modifiziert) die meisten der Code, den ich von Pdf.js Beiträge hier bin mit, und es ist ziemlich geradlinig und scheint genau wie erwartet, abgesehen von dieser Ausgabe:
testLoop: function (event) {
var file = event.target.files[0];
var fileReader = new FileReader();
fileReader.readAsArrayBuffer(file);
fileReader.onload = function() {
var typedArray = new Uint8Array(this.result);
PDFJS.getDocument(typedArray).then(function (pdf) {
for(var i = 1; i <= pdf.numPages; i++) {
pdf.getPage(i).then(function (page) {
page.getTextContent().then(function (textContent) {
console.log(textContent);
});
});
}
});
}
},
Außerdem ist die Größe der zurückgegebenen textContent-Objekte für jede Seite leicht unterschiedlich, obwohl alle Objekte ein gemeinsames letztes Objekt teilen - das letzte Bit des gesamten Dokuments. Hier
ist ein Bild von meinem Kontrolleur zu verdeutlichen, dass die Objekte sind alle sehr ähnlich dimensioniert.
Durch manuelle Inspektion der Objekte im Inspektor gezeigt, kann ich sehen, dass die Daten von, Seite # 1 zum Beispiel wirklich nur aus etwa 140 Array-Elemente bestehen sollte, also warum das Objekt für diese Seite enthält ~ 700 oder so? Und warum die Variation?
Was sind die Einzelteile? Ohne das Array oder das PDF zu sehen, ist es nicht sicher, aber ich habe Dokumente durchsucht, in denen die Elemente nicht in einfachen Wort-Tokens enthalten sind. Für (gute, schlechte, zufällige, irrelevante) Gründe könnte das pdf so aufgebaut sein, dass es sich oft auf Whitespace oder Midwords aufteilt. Ich habe mich immer den Arrays angeschlossen und meine eigene Tokenisierung durchgeführt. Ein einfacher '.join() .split (/ \ s + /)' könnte einen Versuch wert sein. – user01
Diese Antwort hat ein sehr gutes Beispiel dafür, wie Pdf.js verwendet Textinhalt zu extrahieren: http://stackoverflow.com/a/20522307/6481438 – GCSDC
@ user01 Danke für die Antwort - Ihr Punkt über die PDF ist seltsam hilft zusammengesetzt viel! – ineedhelp