OneNote-Analyse - Wie komme ich zu den Text-Blobs im Dokument?

16

Ich erstelle einen Parser für die .oneDateierweiterung, den ich nach Abschluss zum Apache Tika-Projekt hinzufügen werde.

Hier ist das von APL 2.0 lizenzierte Open Source-Projekt, das ich erstelle: https://github.com/nddipiazza/onenote-parser-java

Ich habe das Spezifikationsdokument hier verwendet: https://docs.microsoft.com/en-us/openspecs/office_file_formats/ms-one/73d22548-a613-4350-8c23-07d15576be50

Als Ausgangspunkt habe ich den Code aus diesem Open Source C ++ - Projekt portiert: https://github.com/dropbox/onenote-parser

Ich habe beim Parsen der Dokumente einen langen Weg zurückgelegt, bin aber auf eine Straßensperre gestoßen.

Hier ist die OneNote-Datei, die ich zum Parsen verwende: https://drive.google.com/file/d/1uROTEnKeBKU08CG_K5zdDTGHa178LgBK/view?usp=sharing

Hier ist der Abschnitt aus diesem Dokument

Ich kann Section1TextArea1 und Section1TextArea2 in meinen analysierten Ergebnissen nicht anzeigen. Ich vermisse also eine Art Schlüsseldaten-Analyseelement oder so.

Es befindet sich definitiv in der OneNote-Datei. Ich kann es im Hex-Viewer sehen:

Hex-Editor-Ansicht des Inhalts

Hier ist die JSON-Analyse-Ausgabe: https://gist.github.com/nddipiazza/02d2252d357b3b02a6b9ab1050474267

Ich habe das Gefühl, dass dem Spezifikationsdokument einige sehr wichtige Informationen fehlen, die zum Parsen dieses proprietären Formats erforderlich sind.

Welche Hauptelemente fehlen mir, was dazu führt, dass ich nicht den tatsächlichen Textinhalt erhalte?

Nicholas DiPiazza
quelle

Antworten:

2

Ich habe es herausgefunden. Es war wichtig zu verstehen, dass Eigenschaftswerte in OneNote Folgendes haben können:

  • Binärer Inhalt
  • Ascii-Textinhalt
  • UTF-16LE-Inhalte.

Es gibt eine Vielzahl von ihnen überall verteilt.

Außerdem habe ich einfach den gesamten Stammdateibaum analysiert. Es wird zu viel doppeltem Text führen, aber es ist mir egal.

Das Projekt wird mit Testfällen und dem Fix hier aktualisiert: https://github.com/nddipiazza/onenote-parser-java/tree/master/src/main/java/org/apache/tika/onenote

AKTUALISIEREN:

Ich habe gerade die Apache Tika PR erstellt: https://github.com/apache/tika/pull/300

Nicholas DiPiazza
quelle