Análise do OneNote - como acessar os Blobs de texto no documento?

16

Estou criando um analisador para a .oneextensão do arquivo que, quando terminar, adicionarei ao projeto Apache Tika.

Aqui está o projeto de código aberto licenciado pela APL 2.0 que estou criando: https://github.com/nddipiazza/onenote-parser-java

Usei o documento de especificação aqui: https://docs.microsoft.com/en-us/openspecs/office_file_formats/ms-one/73d22548-a613-4350-8c23-07d15576be50

Como ponto de partida, eu carreguei o código desse projeto C ++ de código aberto: https://github.com/dropbox/onenote-parser

Eu consegui um longo caminho na análise dos documentos, mas encontrei um obstáculo.

Aqui está o arquivo do OneNote que estou usando para analisar: https://drive.google.com/file/d/1uROTEnKeBKU08CG_K5zdDTGHa178LgBK/view?usp=sharing

Aqui está a seção deste documento

Não consigo visualizar a Section1TextArea1 e a Section1TextArea2 nos meus resultados analisados. Então, estou perdendo algum tipo de elemento de análise de dados chave ou algo assim.

Definitivamente, está no próprio arquivo do OneNote. Eu posso vê-lo no visualizador Hex:

visualização em editor hexadecimal do conteúdo

Aqui está a saída de análise JSON: https://gist.github.com/nddipiazza/02d2252d357b3b02a6b9ab1050474267

Sinto que falta no documento de especificação algumas informações muito importantes necessárias para analisar esse formato proprietário.

Que elementos principais estão faltando, resultando em não obter o conteúdo de texto real?

Nicholas DiPiazza
fonte

Respostas:

2

Eu descobri. Era uma questão de entender que os valores das propriedades no OneNote podem ter:

  • Conteúdo binário
  • Conteúdo de texto em ASCII
  • Conteúdo UTF-16LE.

Há uma variedade deles espalhados por toda parte.

Também fui em frente e analise toda a árvore de arquivos raiz. Isso resultará em muito texto duplicado, mas eu realmente não me importo.

O projeto é atualizado com casos de teste e a correção aqui: https://github.com/nddipiazza/onenote-parser-java/tree/master/src/main/java/org/apache/tika/onenote

ATUALIZAR:

Acabou de criar o apache tika PR: https://github.com/apache/tika/pull/300

Nicholas DiPiazza
fonte