3

我正在编写一个用于导入 docx、pdf 和 odt 文件的导入/导出工具;其中写了一本书。

我们已经有了 .epub 格式的工具,并且我们希望将功能扩展到此之外,以便网站的用户可以拥有更大的灵活性。

到目前为止,我查看了PDFMiner,还发现 docx 只是基于openxml格式,所以 word/document.xml 本质上是包含整个内容的文件,我可以用 lxml 解析它。

我的问题是:我希望解析这些文件的内容,并从该内容中提取章节名称、图像(如果有)和章节文本等内容,以便将内容放入数据模型中的:

Book --> o2m --> Chapter --> o2m --> Image

显然,PDFMiner 有一个 .get_outlines() 函数,它将为我返回 TOC。但它不能将任何返回的元组(章节编号和标题)链接到该章节的实际页面。

更成问题的是 docx/odt;这些只是段落 -- <\w:sdt> -- 元素,带有 attrs 和子元素。

我正在寻找从这些文件类型中推断出一些结构感的想法,如果需要,我可以将这些想法(2 或 3)应用为我们希望通过其中一个导入书籍的用户的建议格式文件格式。

4

2 回答 2

1

Textract是迄今为止我遇到的用于解析不同文件格式的最佳工具。

它可以解析大多数文件格式。

你可以在Github上找到该项目

这里是官方文档

于 2015-05-26T16:29:38.877 回答
0

(Python 3 答案)

当我在寻找一种读取 .docx 文件的工具时,我可以在这里找到一个:http: //etienned.github.io/posts/extract-text-from-word-docx-simply/

它所做的只是从 .docx 文件中获取文本并将其作为字符串返回;单独的段落仍然明显分开,因为之间有新的行,但所有其他格式都丢失了。我认为这可能包括丢失尾注和脚注,但如果你想要文本的正文,它会很好用。

我已经在 Windows 10 和 OS X 上对其进行了测试,并且在两者上都成功运行。这是它导入的内容:

import zipfile
try:
    from xml.etree.cElementTree import XML
    print("cElementTree")
except ImportError:
    from xml.etree.ElementTree import XML
    print("ElementTree")

编辑:

如果,在函数体中,你替换

'word/document.xml'

'word/footnotes.xml'

或者

'word/endnotes.xml'

你可以分别得到脚注和尾注。

但是,它们在文本中的位置的标记丢失了。

于 2017-05-14T00:33:38.293 回答