2015-03-15 3 views
-1

Я попытался преобразовать PDF-документ в txt-файл. (пример pdf-файла link)Python - конвертировать pdf в текст, ошибка кодирования

Так что я пробовал, как показано ниже. Но извлеченный текст странный, как ??챘#?遏?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-64bit.

Я попытался его другим способом, используя 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»кодек не может кодировать символ и„\ u0152“в положении 602: порядковый номер не в диапазоне (128) 'ошибка

+0

Вы не можете использовать все эти объявления кодировки вы можете - как, что не работает ли это? – jedwards

+1

Кроме того, вы не используете pyPdf в любом месте, что, вероятно, не помогает. – jedwards

+0

@jedwards Я использовал pypdf. но я не смог получить хороший результат ..... – user3704652

ответ

1

Бывший код не может работать вообще, PDF не обязательно содержит непосредственно читаемый текст вообще. Последний код с pyPdf выглядит более многообещающим.

TypeError поднимается, потому что pages in PDF (page) не являются строками, но f.write ожидает увидеть строку.

Таким образом, вы можете попробовать использовать метод extractText из документации:

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

Tha kyou! Я исправляю код, следующий за вашим руководством. Но он все еще не работает. T.T. ['ascii' кодек не может кодировать символ u '\ u0152' в позиции 602: порядковый номер не в диапазоне (128) '] появляется предложение об ошибке. – user3704652

+0

@ user3704652 исправлено. Забыл, что это Python 2 –

+0

О, мой бог .......... Ты гений! о мой Бог!! – user3704652

Смежные вопросы