这是可能的,但不一定容易,因为PDF格式是如此丰富.您可以在
here中找到详细描述它的文档.它提供了有关PDF如何显示文本的第一个基本示例:
BT
/F13 12 Tf
288 720 Td
(ABC) Tj
ET
BT和ET是开始和结束文本对象的命令; Tf是一个使用外部字体资源F13(恰好是Helvetica)的命令,大小为12; Td是将光标定位在给定坐标处的命令; Tj是为前一个字符串写入字形的命令.味道有些“反向抛光符号” – 而且确实非常接近Postscript的味道,后者是Adobe对排版的其他重要贡献之一.
问题是,PDF规范中没有任何内容表明“看起来像”它一样在页面上显示的文本必须实际上“在一起”;因为总是可以给出精确的坐标,如果PDF是由复杂的排版布局系统生成的,它可以通过坐标逐个字符地精确定位文本.因此,以单词和句子的形式重建文本并不一定容易 – 它几乎和光学文本识别一样难,除了你精确地给出了字符(好吧 – 差不多……一些所谓的“图像”实际上可能显示为字符… ;-).
pyPdf是一个非常简单的纯Python库,是玩PDF文件的一个很好的起点.它的“文本提取”功能非常简单,除了连接一些文本绘图命令的参数外什么都不做;你会看到某些文档就足够了,并且在其他文档中无法使用,但至少它是一个开始.作为分布式,pyPdf几乎没有颜色,但有一些黑客可以补救.
reportlab强大的Python库完全专注于生成新的PDF,而不是解释或修改现有的PDF.另一方面,纯Python库pdfminer完全专注于解析PDF文件;它确实进行了一些聚类,以便在更简单的库被难倒的情况下尝试重建文本.
我不知道现有的库可以执行你想要的转换任务,但是混合和匹配其中一些现有的库应该是可行的,以便完成大部分工作……祝你好运!