如何用Python基础with open方法提取PDF中文文本?无需第三方大库
为什么直接用基础文件读取拿不到PDF文本
PDF是有严格内部结构的二进制文档格式,和txt这类纯文本文件完全不是一个存储逻辑。文档里的有效文本不会直接以可识别的编码平铺在文件字节流中,而是大多经过压缩、自定义字体编码映射,存储在专用的流结构对象里。
你用rb模式读取得到的带b'前缀的内容,是PDF的原始结构标记、元数据、压缩后的流数据,根本不是可直接读取的有效文本。就算强行对这些字节做通用解码,也只会输出乱码,压根提取不到正常的文档内容。
你写的文件读取代码本身语法没有问题,但前提是读取无结构化的纯文本文件,用这套逻辑处理PDF的特殊格式,自然得不到预期结果。
可行的处理方案
- 如果完全不打算用任何第三方库,基本不可能实现通用场景下的PDF文本提取:要手动解析PDF的内部流结构、解压压缩内容、还原自定义字体的编码映射,手写逻辑的工作量远大于安装一个轻量依赖,且兼容性极差,遇到带加密、特殊字体编码的PDF根本无法正常解析。
- 如果你觉得pdfminer等工具体积过大,可以换用轻量的PDF处理库,这类库的安装包仅几MB,远小于pdfminer的体积:比如
pypdf,安装后调用内置的文本提取接口,就会自动帮你完成内部流解压、编码映射的全流程,不需要手动啃二进制结构。
内容的提问来源于stack exchange,提问作者linsen1983
相关产品推荐
相关产品推荐

