OneNote parsing - bagaimana menuju ke Text Blobs di dokumen?

16

Saya membuat parser untuk .oneekstensi file, yang ketika selesai saya akan tambahkan ke proyek Apache Tika.

Inilah proyek Open Source berlisensi APL 2.0 yang saya buat: https://github.com/nddipiazza/onenote-parser-java

Saya menggunakan dokumen spesifikasi di sini: https://docs.microsoft.com/en-us/openspecs/office_file_formats/ms-one/73d22548-a613-4350-8c23-07d15576be50

Sebagai titik awal, saya melakukan porting pada kode dari proyek C ++ open source ini: https://github.com/dropbox/onenote-parser

Saya sudah lama menguraikan dokumen-dokumen itu, tetapi saya telah menemukan jalan.

Ini adalah file OneNote yang saya gunakan untuk mem-parsing: https://drive.google.com/file/d/1uROTEnKeBKU08CG_K5zdDTGHa178LgBK/view?usp=sharing

Ini bagian dari dokumen ini

Saya tidak dapat melihat Section1TextArea1 dan Section1TextArea2 di hasil parsing saya. Jadi saya kehilangan beberapa elemen parsing data kunci atau sesuatu.

Sudah pasti dalam file OneNote itu sendiri. Saya bisa melihatnya di Hex viewer:

hex editor melihat konten

Berikut ini adalah keluaran parse JSON: https://gist.github.com/nddipiazza/02d2252d357b3b02a6b9ab1050474267

Saya merasa seperti dokumen spesifikasi kehilangan beberapa informasi yang sangat penting yang diperlukan untuk mem-parsing format berpemilik ini.

Elemen utama apa yang saya lewatkan sehingga saya tidak mendapatkan konten teks yang sebenarnya?

Nicholas DiPiazza
sumber

Jawaban:

2

Saya menemukan jawabannya. Itu adalah masalah pemahaman bahwa nilai properti di OneNote dapat memiliki:

  • Isi biner
  • Konten teks ascii
  • Isi UTF-16LE.

Ada berbagai macam yang ditaburkan di seluruh.

Saya juga langsung melanjutkan dan mem-parsing seluruh file root. Ini akan menghasilkan banyak teks duplikat tetapi saya tidak begitu peduli.

Proyek ini diperbarui dengan kasus uji dan perbaikan di sini: https://github.com/nddipiazza/onenote-parser-java/tree/master/src/main/java/org/apache/tika/onenote

MEMPERBARUI:

Baru saja membuat apache tika PR: https://github.com/apache/tika/pull/300

Nicholas DiPiazza
sumber