如何将pdf文件转换为内容为阿拉伯语的文本文件

时间:2017-12-14 10:03:05

标签: python pdf utf-8 encode arabic

我有一个python脚本,列出指定目录中的所有 pdf文件,并将其转换为文本文件

系统工作完善问题是当我有 ARABIC 文本时脚本崩溃,因为它无法在PDF文件中搜索。

我知道pdf是二进制文件,但不知道如何阅读ARABIC并将其转换为文本 如何解决这个错误?

我尝试编码为UTF-8并对其进行解码,但仍无法正常工作

如果我尝试在代码底部带有注释行的代码,结果将被转换为空文本文件。

如果我尝试取消注释行以进行编码和解码,结果将是空转换后的文本文件,并显示以下错误:

  

Traceback(最近一次调用最后一次):文件   " C:\ Users \ test \ Downloads \ pdf-txt \ text maker.py",第63行,in       content.decode(' ascii','忽略')UnicodeEncodeError:' ascii'编解码器不能对字符u' \ xa9'进行编码。位置50:序数不在   范围(128)

的代码:

import os
from os import chdir, getcwd, listdir, path
import codecs
import pyPdf
from time import strftime


def check_path(prompt):
    ''' (str) -> str
    Verifies if the provided absolute path does exist.
    '''
    abs_path = raw_input(prompt)
    while path.exists(abs_path) != True:
        print "\nThe specified path does not exist.\n"
        abs_path = raw_input(prompt)
    return abs_path    

print "\n"

folder = check_path("Provide absolute path for the folder: ")

list=[]
directory=folder
for root,dirs,files in os.walk(directory):
    for filename in files:
        if filename.endswith('.pdf'):
            t=os.path.join(directory,filename)
            ##print(t)
            ##list.extend(t)
            list.append(t)
           ## print(list)


m=len(list)
print (m)
i=0
while i<=m-1:

    path=list[i]
    print(path)
    head,tail=os.path.split(path)
    var="\\"

    tail=tail.replace(".pdf",".txt")
    name=head+var+tail




    content = ""
    # Load PDF into pyPDF
    pdf = pyPdf.PdfFileReader(file(path, "rb"))
    ##pdf = pyPdf.PdfFileReader(codecs.open(path, "rb", encoding='UTF-8'))
    # Iterate pages
    for j in range(0, pdf.getNumPages()):
        # Extract text from page and add to content
        content += pdf.getPage(j).extractText() + "\n"
    print strftime("%H:%M:%S"), " pdf  -> txt "
    f=open(name,'w')
## all this red line are added by me ##
    ##f.decode(content.encode('UTF-8'))
    ##content.encode('utf-8')
    ##content.decode('ascii', 'ignore')
    ##content.decode('unicode-escape')
    ##f.write(content)
    f.write(content.encode('UTF-8'))
    f.close
    i=i+1

0 个答案:

没有答案