Análisis de OneNote: ¿cómo llegar a los blobs de texto en el documento?

16

Estoy creando un analizador para la .oneextensión de archivo, que cuando termine lo agregaré al proyecto Apache Tika.

Aquí está el proyecto de código abierto con licencia APL 2.0 que estoy creando: https://github.com/nddipiazza/onenote-parser-java

Usé el documento de especificación aquí: https://docs.microsoft.com/en-us/openspecs/office_file_formats/ms-one/73d22548-a613-4350-8c23-07d15576be50

Como punto de partida, porté el código de este proyecto C ++ de código abierto: https://github.com/dropbox/onenote-parser

He recorrido un largo camino en el análisis de los documentos, pero me he topado con un obstáculo.

Aquí está el archivo OneNote que estoy usando para analizar: https://drive.google.com/file/d/1uROTEnKeBKU08CG_K5zdDTGHa178LgBK/view?usp=sharing

Aquí está la sección de este documento.

No puedo ver Section1TextArea1 y Section1TextArea2 en mis resultados analizados. Así que me falta algún tipo de elemento de análisis de datos clave o algo así.

Definitivamente está en el archivo OneNote. Puedo verlo en el visor Hex:

vista del editor hexadecimal del contenido

Aquí está la salida de análisis JSON: https://gist.github.com/nddipiazza/02d2252d357b3b02a6b9ab1050474267

Siento que al documento de especificaciones le falta información muy importante necesaria para analizar este formato propietario.

¿Qué elementos principales me estoy perdiendo, lo que hace que no obtenga el contenido de texto real?

Nicholas DiPiazza
fuente

Respuestas:

2

Me lo imaginé. Era cuestión de comprender que los valores de propiedad en OneNote pueden tener:

  • Contenidos binarios
  • Contenidos de texto ASCII
  • Contenidos UTF-16LE.

Hay una variedad de ellos esparcidos por todas partes.

También seguí adelante y analicé todo el árbol de archivos raíz. Resultará en un montón de texto duplicado, pero realmente no me importa.

El proyecto se actualiza con casos de prueba y la solución aquí: https://github.com/nddipiazza/onenote-parser-java/tree/master/src/main/java/org/apache/tika/onenote

ACTUALIZAR:

Acabo de crear el apache tika PR: https://github.com/apache/tika/pull/300

Nicholas DiPiazza
fuente