Python-将pdf转换为文本,编码

2024-05-20 13:42:59 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图将pdf文档转换为txt文件。 (pdf文件示例link

所以我试了一下。 但是提取的文本很奇怪,就像??챘#?遏?h첨챦_철?‾n?~w??¬?k 我怎样才能修好它?

#!/usr/bin/python
# -*- coding: cp949 -*-
# -*- coding: utf-8 -*-
# -*- coding: latin-1 -*-
# -*- coding: euc-kr -*-

import codecs
import pyPdf
filename = "d:/data/processed_data/paper/iscram/2006/iscram1.pdf"
#pdf = codecs.open(filename, "rb", encoding = 'utf-8') 
pdf = codecs.open(filename, "rb", encoding = 'latin1')
for page in pdf:
    print page.encode('utf-8')

我用的是win7-64位韩文版本。

我尝试了另一种方法,使用pyPdf,如下所示

import os
import glob
from pyPdf import PdfFileReader
import pdfminer

f=open("d:/data/processed_data/paper/iscram/2006/iscram1.txt",'w')
parent = "d:/data/processed_data/paper/iscram/2006"
os.chdir(parent)
filename = os.path.abspath('iscram1.pdf')

input = PdfFileReader(file(filename, "rb"))
for page in input.pages:
    f.write(page.extractText())

但它不起作用,出现“ascii”编解码器无法对位置602中的字符u'\u0152'进行编码:序号不在范围(128)内的错误


Tags: importdatapdfpageopenfilenameutfpaper
1条回答
网友
1楼 · 发布于 2024-05-20 13:42:59

以前的代码根本不能工作,PDF根本不一定包含直接可读的文本。不过,使用pyPdf的后一个代码看起来更有希望。

之所以引发^{},是因为pages in PDF(Thepage)不是字符串,但f.write希望看到字符串。

因此,您可以尝试使用文档中的extractText方法:

for page in input.pages:
    f.write(page.extractText().encode('UTF-8'))

相关问题 更多 >