Python — Parsing files (docx, pdf and odt) and converting the content into my data model
我正在编写一个导入/导出工具,用于导入 docx、pdf 和 odt 文件;其中写了一本书。
我们已经有了一个用于 .epub 格式的工具,并且我们希望在此基础上扩展功能,以便该网站的用户可以拥有更大的灵活性。
到目前为止,我查看了 PDFMiner,还发现 docx 只是基于 openxml 格式,所以 word/document.xml 本质上是包含整个内容的文件,我可以用 lxml 解析它。
我的问题是:我希望解析这些文件的内容,并从该内容中提取章节名称、图像(如果有)和章节文本等内容,以便将内容放入数据模型:
1
|
Book —> o2m —> Chapter —> o2m —> Image
|
很明显,PDFMiner 有一个 .get_outlines() 函数可以为我返回 TOC。但它不能将任何返回的元组(章节编号和标题)链接到该章节的实际页面。
更成问题的是 docx/odt;这些只是段落 — <\\\\w:sdt> — 元素,带有 attrs 和子元素。
我正在寻找从这些文件类型中推断出某种结构感的想法,如果需要,我可以将这些想法(2 或 3)应用为我们希望通过以下方式导入书籍的用户的建议格式这些文件格式之一。
- 有趣的项目。它是一个开源项目吗?
- @Trimax 不幸的是没有。这是一个商业网站。
- 很遗憾,我正在寻找一个与之合作的项目。
- @Trimax 我明天会和我的老板谈谈开源它。我也许能说服他们
- 输入 docx 是否使用通用模板或以其他方式遵循已知/可预测的样式集?
- @JasonPlutext 那是我希望提出的结构。我考虑过解析 14 pt 标题和 12 pt 正文
- @Trimax 与老板交谈,他们同意将其开源。你愿意帮忙吗?
- @SamHammamy 我需要更多地了解这个项目,你必须知道我是 OOP 的菜鸟,但如果你需要我的帮助,那肯定是的。
- @Trimax 请在 samATtowerbabelDOTcom 给我发电子邮件
Textract 是迄今为止我遇到的用于解析不同文件格式的最佳工具。
它可以解析大多数文件格式。
你可以在 Github 上找到该项目
这里是官方文档
(Python 3 答案)
当我在寻找一种读取 .docx 文件的工具时,我在这里找到了一个:http://etienned.github.io/posts/extract-text-from-word-docx-simply/
它所做的只是从 .docx 文件中获取文本并将其作为字符串返回;单独的段落仍然明显分开,因为之间有新的行,但所有其他格式都丢失了。我认为这可能包括丢失尾注和脚注,但如果你想要正文,它会很好。
我在 Windows 10 和 OS X 上都对其进行了测试,并且在两者上都成功运行。这是它导入的内容:
1
2 3 4 5 6 7 |
import zipfile
try: from xml.etree.cElementTree import XML print(“cElementTree”) except ImportError: from xml.etree.ElementTree import XML print(“ElementTree”) |
编辑:
如果在函数体中替换
1
|
‘word/document.xml’
|
与
1
|
‘word/footnotes.xml’
|
或
1
|
‘word/endnotes.xml’
|
你可以分别得到脚注和尾注。
但是,它们在文本中所在位置的标记丢失了。
- 您可以将其用于 odt,但您需要更改以下几行:
来源:https://www.codenong.com/24860635/