2016-05-24 5 views
-1

ГолОшибка Python Unicode Чтение арабскую PDF в TXT

Чтобы преобразовать файл PDF, который имеет некоторый арабский текст в ней в текстовый файл в кодировке UTF-8 в Python с использованием PyPDF.

Код

То, что я пробовал:

import pyPdf 
import codecs 
input_filepath = "hans_wehr_searchable_pdf.pdf"#pdf file path 
output_filepath = "output.txt"#output text file path 
output_file = open(output_filepath, "wb")#open output file 
pdf = pyPdf.PdfFileReader(open(input_filepath, "rb"))#read PDF 
for page in pdf.pages:#loop through pages 
    page_text = page.extractText()#get text from page 
    page_text = page_text.decode(encoding='utf-8')#decode 
    output_file.write(page_text)#write to file 
output_file.close()#close 

Ошибка

Я же получаю эту ошибку:

Traceback (most recent call last): 
    File "pdf2txt.py", line 9, in <module> 
    page_text = page_text.decode(encoding='windows-1256')#decode 
    File "/usr/lib/python2.7/encodings/cp1256.py", line 15, in decode 
    return codecs.charmap_decode(input,errors,decoding_table) 
UnicodeEncodeError: 'ascii' codec can't encode character u'\u2122' in position 98: ordinal not in range(128) 

Файл

The said PDF.

Incase кто-то хочет, чтобы пойти на это.

+0

Возможный дубликат [UnicodeEncodeError: 'ASCII' кодек не может кодировать символ и '\ xa0' в позиции 20: порядковый не в диапазоне (128)] (HTTP: // StackOverflow .com/questions/9942594/unicodeencodeerror-ascii-codec-cant-encode-character-u-xa0-in-position-20) –

+1

Как насчет того, чтобы извлечь только код и данные, вызывающие проблему, и создать обычный минимальный, но полный пример с ними? Рассмотрим, например, важно ли, чтобы данные поступали из PDF-файла или нет. Также рассмотрите возможность обновления до последней версии Python. –

ответ

3

Вместо того, чтобы открыть файл, используя встроенный в Python open вы можете попытаться открыть файл с помощью codecs и указав кодировку файла при открытии, что она выглядит, как вы уже импортировали codecs. Ваш код изменится на:

import pyPdf 
import codecs 
input_filepath = "hans_wehr_searchable_pdf.pdf"#pdf file path 
output_filepath = "output.txt"#output text file path 
output_file = open(output_filepath, "wb")#open output file 
pdf = pyPdf.PdfFileReader(codecs.open(input_filepath, "rb", encoding='utf-8'))#read PDF 
for page in pdf.pages:#loop through pages 
    page_text = page.extractText()#get text from page 
    page_text = page_text.decode(encoding='utf-8')#decode 
    output_file.write(page_text)#write to file 
output_file.close()#close 
Смежные вопросы