OneNote解析-如何获取文档中的文本Blob?


16

我正在为.one文件扩展名创建一个解析器,完成后我将其添加到Apache Tika项目中。

这是我正在创建的APL 2.0许可的开源项目:https : //github.com/nddipiazza/onenote-parser-java

我在这里使用了规范文档:https : //docs.microsoft.com/zh-cn/openspecs/office_file_formats/ms-one/73d22548-a613-4350-8c23-07d15576be50

首先,我移植了这个开源C ++项目中的代码:https : //github.com/dropbox/onenote-parser

我在解析文档方面已经走了很长一段路,但是遇到了障碍。

这是我用来解析的OneNote文件:https : //drive.google.com/file/d/1uROTEnKeBKU08CG_K5zdDTGHa178LgBK/view? usp =sharing

这是本文档中的部分

我无法在解析的结果中查看Section1TextArea1和Section1TextArea2。因此,我缺少某种关键数据解析元素或其他东西。

它绝对在OneNote文件本身中。我可以在十六进制查看器中看到它:

内容的十六进制编辑器视图

这是JSON解析输出:https : //gist.github.com/nddipiazza/02d2252d357b3b02a6b9ab1050474267

我觉得规范文档缺少解析该专有格式所需的一些非常重要的信息。

我缺少哪些主要元素,导致我没有获得实际的文本内容?

Answers:


2

我想到了。需要理解的是,OneNote中的属性值可以具有以下任一种:

  • 二进制内容
  • ASCII文字内容
  • 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/300

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.