Phân tích cú pháp OneNote - làm thế nào để truy cập Blobs văn bản trong tài liệu?


16

Tôi đang tạo một trình phân tích cú pháp cho .onephần mở rộng tệp, khi hoàn thành tôi sẽ thêm vào dự án Tika của Apache.

Đây là dự án mã nguồn mở được cấp phép APL 2.0 mà tôi đang tạo: https://github.com/nddiplists/onenote-parser-java

Tôi đã sử dụng tài liệu đặc tả ở đây: https://docs.microsoft.com/en-us/openspecs/office_file_formats/ms-one/73d22548-a613-4350-8c23-07d15576be50

Để bắt đầu, tôi đã chuyển mã từ dự án C ++ mã nguồn mở này: https://github.com/dropbox/onenote-parser

Tôi đã nhận được một chặng đường dài trong việc phân tích tài liệu, nhưng tôi đã gặp phải một chặn đường.

Đây là tệp OneNote tôi đang sử dụng để phân tích cú pháp: https://drive.google.com/file/d/1uROTEnKeBKU08CG_K5zdDTGHa178LgBK/view?usp=shaming

Đây là phần từ tài liệu này

Tôi không thể xem Mục1TextArea1 và Mục1TextArea2 trong các kết quả được phân tích cú pháp của mình. Vì vậy, tôi đang thiếu một số loại yếu tố phân tích dữ liệu quan trọng hoặc một cái gì đó.

Nó chắc chắn nằm trong tệp OneNote. Tôi có thể thấy nó trong trình xem Hex:

xem biên tập hex của nội dung

Đây là đầu ra phân tích cú pháp JSON: https://gist.github.com/nddip lọc/02d2252d357b3b02a6b9ab1050474267

Tôi cảm thấy như tài liệu đặc tả đang thiếu một số thông tin rất quan trọng cần thiết để phân tích định dạng độc quyền này.

Yếu tố chính nào tôi bị thiếu dẫn đến việc tôi không nhận được nội dung văn bản thực tế?

Câu trả lời:


2

Tôi đã hiểu rồi. Đó là vấn đề hiểu rằng các giá trị thuộc tính trong OneNote có thể có:

  • Nội dung nhị phân
  • Nội dung văn bản
  • Nội dung UTF-16LE.

Có một loạt trong số họ rắc khắp.

Ngoài ra tôi chỉ đi trước và phân tích toàn bộ cây tập tin gốc. Nó sẽ dẫn đến nhiều văn bản trùng lặp nhưng tôi không thực sự quan tâm.

Dự án được cập nhật với các trường hợp thử nghiệm và sửa lỗi tại đây: https://github.com/nddip lọc / onenote-parser-java / tree / master / src / main / java / org / apache / tika / onenote

CẬP NHẬT:

Chỉ cần tạo apache tika PR: https://github.com/apache/tika/pull/300

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.