web-dev-qa-db-ja.com

OneNote解析-ドキュメントのテキストBlobにアクセスする方法?

.oneファイル拡張子のパーサーを作成しています。完成したら、Apache Tikaプロジェクトに追加します。

これが、私が作成しているAPL 2.0ライセンスのオープンソースプロジェクトです。 https://github.com/nddipiazza/onenote-parser-Java

ここで仕様書を使用しました: https://docs.Microsoft.com/en-us/openspecs/office_file_formats/ms-one/73d22548-a613-4350-8c23-07d15576be5

開始点として、私はこのオープンソースC++プロジェクトからコードを移植しました: https://github.com/dropbox/onenote-parser

文書の解析に長い道のりを歩んできましたが、障害になりました。

これが私が解析に使用しているOneNoteファイルです: https://drive.google.com/file/d/1uROTEnKeBKU08CG_K5zdDTGHa178LgBK/view?usp=sharing

Here is the section from this document

解析結果でSection1TextArea1とSection1TextArea2を表示できません。だから私はある種の重要なデータ解析要素か何かが欠けています。

それは間違いなくOneNoteファイル自体にあります。 Hexビューアで確認できます。

hex editor view of the content

JSON解析の出力を次に示します。 https://Gist.github.com/nddipiazza/02d2252d357b3b02a6b9ab1050474267

仕様書には、この独自フォーマットを解析するために必要ないくつかの非常に重要な情報が欠けているように感じます。

どの主要な要素が欠けているので、実際のテキストコンテンツを取得できませんか?

16

私はそれを考え出した。 OneNoteのプロパティ値は次のいずれかになる可能性があることを理解する必要がありました。

  • バイナリコンテンツ
  • アスキーテキストコンテンツ
  • UTF-16LEコンテンツ。

いろいろと散りばめられています。

また、私は先に進んで、ルートファイルツリー全体を解析しました。それは多くの重複したテキストをもたらしますが、私は本当に気にしません。

プロジェクトはテストケースとここでの修正で更新されます: https://github.com/nddipiazza/onenote-parser-Java/tree/master/src/main/Java/org/Apache/tika/onenote

更新:

Apache tika PRを作成しました: https://github.com/Apache/tika/pull/3

2