在Python中将PDF转换为txt,但无法保存
我编写了一段代码,它获取pdf文档并从中提取文本:在Python中将PDF转换为txt,但无法保存,python,pdf,Python,Pdf,我编写了一段代码,它获取pdf文档并从中提取文本: from io import StringIO from pdfminer.converter import TextConverter from pdfminer.layout import LAParams from pdfminer.pdfdocument import PDFDocument from pdfminer.pdfinterp import PDFResourceManager, PDFPageInterpreter f
from io import StringIO
from pdfminer.converter import TextConverter
from pdfminer.layout import LAParams
from pdfminer.pdfdocument import PDFDocument
from pdfminer.pdfinterp import PDFResourceManager, PDFPageInterpreter
from pdfminer.pdfpage import PDFPage
from pdfminer.pdfparser import PDFParser
output_string = StringIO()
with open("C:\\Users\\document.pdf", 'rb') as in_file:
parser = PDFParser(in_file)
doc = PDFDocument(parser)
rsrcmgr = PDFResourceManager()
device = TextConverter(rsrcmgr, output_string, laparams=LAParams())
interpreter = PDFPageInterpreter(rsrcmgr, device)
for page in PDFPage.create_pages(doc):
interpreter.process_page(page)
print(output_string.getvalue())
它工作正常,但我想自动将输出保存为txt文件。我试着在最后一行之前导入sys
并写入sys.stdout=open('document.test.txt','wt')
,但我得到了:
UnicodeEncodeError Traceback (most recent call last)
<ipython-input-8-4a73089c6ebb> in <module>
18 interpreter.process_page(page)
19 sys.stdout = open('document.test.txt','wt')
---> 20 print(output_string.getvalue())
~\anaconda3\lib\encodings\cp1252.py in encode(self, input, final)
17 class IncrementalEncoder(codecs.IncrementalEncoder):
18 def encode(self, input, final=False):
---> 19 return codecs.charmap_encode(input,self.errors,encoding_table)[0]
20
21 class IncrementalDecoder(codecs.IncrementalDecoder):
UnicodeEncodeError: 'charmap' codec can't encode character '\u2192' in position 1614: character maps to <undefined>
UnicodeEncodeError回溯(最近一次呼叫最后一次)
在里面
18.翻译程序页面(第页)
19 sys.stdout=open('document.test.txt','wt')
--->20打印(输出字符串.getvalue())
编码中的~\anaconda3\lib\encodings\cp1252.py(self,input,final)
17类递增编码器(编解码器.递增编码器):
18 def编码(自身、输入、最终=假):
--->19返回编解码器.charmap_encode(输入、自身错误、编码_表)[0]
20
21类增量编码器(编解码器.增量编码器):
UnicodeEncodeError:“charmap”编解码器无法对位置1614中的字符“\u2192”进行编码:字符映射到
我认为文本本身没有问题,因为它在其他方面是有效的。我认为这是保存输出的错误方法。这是否回答了您的问题?您不需要重新分配stdout
print(output_string.getvalue(),file=f)
会将输出发送到文件,但您仍然存在文本包含扩展字符的问题。U+2192是一个右向箭头。也许您需要以UTF-8格式打开文件。