我有一个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