Analiza OneNote - jak dostać się do obiektów blob tekstowych w dokumencie?

16

Tworzę parser dla .onerozszerzenia pliku, który po zakończeniu dodam do projektu Apache Tika.

Oto tworzony przeze mnie projekt Open Source na licencji APL 2.0: https://github.com/nddipiazza/onenote-parser-java

Użyłem tutaj dokumentu specyfikacji: https://docs.microsoft.com/en-us/openspecs/office_file_formats/ms-one/73d22548-a613-4350-8c23-07d15576be50

Na początek przeniosłem kod z tego projektu C ++ typu open source: https://github.com/dropbox/onenote-parser

Przeszedłem długą drogę w przetwarzaniu dokumentów, ale natrafiłem na blokadę drogi.

Oto plik OneNote, którego używam do analizowania: https://drive.google.com/file/d/1uROTEnKeBKU08CG_K5zdDTGHa178LgBK/view?usp=sharing

Oto sekcja z tego dokumentu

Nie mogę wyświetlić Section1TextArea1 i Section1TextArea2 w moich przeanalizowanych wynikach. Brakuje mi więc jakiegoś kluczowego elementu analizującego dane lub czegoś takiego.

Jest to zdecydowanie w samym pliku OneNote. Widzę to w przeglądarce Hex:

widok edytora szesnastkowego treści

Oto wynik analizy JSON: https://gist.github.com/nddipiazza/02d2252d357b3b02a6b9ab1050474267

Wydaje mi się, że w dokumencie specyfikacji brakuje bardzo ważnych informacji potrzebnych do przeanalizowania tego zastrzeżonego formatu.

Jakich głównych elementów brakuje mi, co powoduje, że nie otrzymuję faktycznej treści?

Nicholas DiPiazza
źródło

Odpowiedzi:

2

Rozgryzłem to. Chodziło o zrozumienie, że wartości właściwości w programie OneNote mogą mieć:

  • Zawartość binarna
  • Zawartość tekstu Ascii
  • Zawartość UTF-16LE.

Jest ich wiele pokropionych.

Po prostu poszedłem dalej i przeanalizowałem całe drzewo plików root. Spowoduje to powstanie wielu duplikatów tekstu, ale nie obchodzi mnie to.

Projekt został zaktualizowany o przypadki testowe i poprawkę tutaj: https://github.com/nddipiazza/onenote-parser-java/tree/master/src/main/java/org/apache/tika/onenote

AKTUALIZACJA:

Właśnie utworzyłem apache tika PR: https://github.com/apache/tika/pull/300

Nicholas DiPiazza
źródło