OneNote แจง - วิธีไปที่ Text Blobs ในเอกสาร?


16

ฉันกำลังสร้าง parser สำหรับ.oneส่วนขยายของไฟล์ซึ่งเมื่อเสร็จแล้วฉันจะเพิ่มไปยังโครงการ Apache Tika

นี่คือโครงการโอเพ่นซอร์ส APL 2.0 ที่ได้รับสิทธิ์ฉันกำลังสร้าง: https://github.com/nddip Piazza/onenote-parser-java

ฉันใช้เอกสารข้อมูลจำเพาะที่นี่: https://docs.microsoft.com/en-us/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 อย่างแน่นอน ฉันเห็นได้ในมุมมอง Hex:

มุมมอง hex editor ของเนื้อหา

นี่คือเอาต์พุตการแยกวิเคราะห์ JSON: https://gist.github.com/nddip Piazza/02d2252d357b3b02a6b9ab1050474267

ฉันรู้สึกว่าเอกสารข้อมูลจำเพาะขาดข้อมูลสำคัญบางอย่างที่จำเป็นเพื่อแยกวิเคราะห์รูปแบบกรรมสิทธิ์นี้

องค์ประกอบสำคัญใดที่ฉันขาดหายไปทำให้ฉันไม่ได้รับเนื้อหาข้อความจริง

คำตอบ:


2

ฉันคิดออก เป็นเรื่องของความเข้าใจที่ว่าค่าคุณสมบัติใน OneNote สามารถมีได้ทั้ง:

  • เนื้อหาไบนารี
  • เนื้อหาข้อความ Ascii
  • เนื้อหา UTF-16LE

มีความหลากหลายของพวกเขาโรยไปทั่ว

นอกจากนี้ฉันเพิ่งไปข้างหน้าและแยกทรีไฟล์รากทั้งหมด มันจะส่งผลให้ข้อความที่ซ้ำกันจำนวนมาก แต่ฉันไม่สนใจจริงๆ

โครงการนี้ได้รับการอัปเดตด้วยกรณีทดสอบและการแก้ไขที่นี่: https://github.com/nddip Piazza/onenote-parser-java/tree/master/src/main/java/org/apache/tika/onenote

UPDATE:

เพิ่งสร้าง apache tika PR: https://github.com/apache/tika/pull/300

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.