.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
解析結果でSection1TextArea1とSection1TextArea2を表示できません。だから私はある種の重要なデータ解析要素か何かが欠けています。
それは間違いなくOneNoteファイル自体にあります。 Hexビューアで確認できます。
JSON解析の出力を次に示します。 https://Gist.github.com/nddipiazza/02d2252d357b3b02a6b9ab1050474267
仕様書には、この独自フォーマットを解析するために必要ないくつかの非常に重要な情報が欠けているように感じます。
どの主要な要素が欠けているので、実際のテキストコンテンツを取得できませんか?
私はそれを考え出した。 OneNoteのプロパティ値は次のいずれかになる可能性があることを理解する必要がありました。
いろいろと散りばめられています。
また、私は先に進んで、ルートファイルツリー全体を解析しました。それは多くの重複したテキストをもたらしますが、私は本当に気にしません。
プロジェクトはテストケースとここでの修正で更新されます: 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