Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/go/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 无法读取pdf文件_Python - Fatal编程技术网

Python 无法读取pdf文件

Python 无法读取pdf文件,python,Python,我试图读取此文件,但它引发以下错误:- “charmap”编解码器无法对6583位置的字节0x9d进行解码:字符映射到 为什么会抛出这个错误?如何解决此问题?关于您的问题,可以通过执行以下操作来解决此错误: 您可以通过两种方式完成: 第一个:是通过执行:rTHEPATH,它将读取您通过路径插入的文件,例如:text=r/Users/dg/Downloads/Data-Wrangling/提纲/82445.pdf 或者你可以把double/,比如://Users//dg//Downloads//D

我试图读取此文件,但它引发以下错误:-

“charmap”编解码器无法对6583位置的字节0x9d进行解码:字符映射到


为什么会抛出这个错误?如何解决此问题?

关于您的问题,可以通过执行以下操作来解决此错误:

您可以通过两种方式完成:

第一个:是通过执行:rTHEPATH,它将读取您通过路径插入的文件,例如:text=r/Users/dg/Downloads/Data-Wrangling/提纲/82445.pdf

或者你可以把double/,比如://Users//dg//Downloads//Data-Wrangling//提纲//82445.pdf这将以同样的方式工作


希望这对您有所帮助:,并且可以自由地提出任何进一步的问题

我可以这样做:

text= textract.process("/Users/dg/Downloads/Data Wrangling/syllabi/82445.pdf") 

这是一个编码问题

Textract使用chardet检测pdf文件utf-8、latin1、cp1252等的编码。。检测文件的编码并不总是一件容易的任务,chardet可能无法检测文件的编码。在您的情况下,对于这个特定的pdf文件,它似乎失败了

如果您知道文件的编码,则可以使用如下输入\编码参数:

import os

file = open("/Users/dg/Downloads/Data Wrangling/syllabi/82445.pdf", "r")
text = file.read()
file.close
import chardet
guessed_encoding = chardet.detect(file)
print(guessed_encoding)
请参见下面链接中的第309期

请注意,encoding参数指定的是输出编码,而不是输入编码。 那么,写作

textract.process(filename, input_encoding="cp1252", output_encoding="utf8")
表示您希望使用ascii编码写入输出文件。但这并不意味着ascii是输入文件的编码

关于chardet的说明: 您可以使用chardet猜测如下文件的编码:

它将输出如下内容:

import os

file = open("/Users/dg/Downloads/Data Wrangling/syllabi/82445.pdf", "r")
text = file.read()
file.close
import chardet
guessed_encoding = chardet.detect(file)
print(guessed_encoding)
或:

在这里你可以看到有一个信心的关键。在第一个示例中,chardet非常确信编码是EUC-JP,但在第二个示例中并非如此

您可以尝试将chardet与导致问题的pdf文件一起使用,并查看其置信度得分

有用链接:


谢谢你的评论,不幸的是,这两个文件都不工作。除了这个名为fils的数字外,我还可以成功地读取其他文件。不幸的是,这不能回答你的问题吗?谢谢,我刚刚按照你的建议做了,is向我展示了这个{'encoding':'IBM866','confidence':0.5119798981570755,'language':'俄语'}但那肯定是一个英文文件。我尝试使用encoding='IBM866',但仍然不起作用。正如我在回答中所说,您必须使用名为input_encoding的参数,而不是名为encoding的参数。因此,要尝试使用utf-8,您需要编写extract.processfilename,input_encoding=utf8。还要注意的是,textract中utf-8的命名约定尚不清楚。通常在Python中是字符串utf-8,但在github和textract的文档中,我只看到utf8和utf_8。因此,如果utf8不起作用,请尝试其他方法。如果它不起作用,请尝试使用其他编码。它将不适用于IBM866,因为此输出只是告诉您textract使用的编码,它失败的编码。信心分数为0.5是一个非常低的分数。这意味着这可能不是正确的编码。所以你必须尝试另一种编码。如果上述方法不起作用,您也可以尝试使用流程和此处所述的显式解码:,甚至在textract的github上创建一个问题。
{'encoding': 'EUC-JP', 'confidence': 0.24}