Im essayant d'exécuter une simple ligne d'analyse de code à l'aide de Tika pour analyser le texte d'un PDF (nommé outputFileName dans cet exemple). Cela fonctionnait sans erreur. J'ai récemment envoyé mon ordinateur portable à notre travail informatique pour les mises à jour logicielles et a dû resintaller Anaconda et importer certains modules (tels que Tika 1.22 sorti le 9 novembre 2019) pour exécuter mon code. J'ai également importé l'analyseur de Tika. Voici la ligne de code et l'erreur message que je reçois:
Code:
# analyser le texte du fichier pdf pour travailler avec
pdftext = parser.from_file (outputFileName)
Erreur
AttributeError Traceback (most recent call last)
<ipython-input-14-239522b5ef31> in <module>
1 #parsing the text out of pdf file to work with
----> 2 pdftext = parser.from_file(outputFileName)
~\AppData\Local\Continuum\anaconda3\lib\site-packages\tika\parser.py in from_file(filename, serverEndpoint, xmlContent, headers, config_path, requestOptions)
34 '''
35 if not xmlContent:
---> 36 jsonOutput = parse1('all', filename, serverEndpoint, headers=headers,config_path=config_path, requestOptions=requestOptions)
37 else:
38 jsonOutput = parse1('all', filename, serverEndpoint, services={'meta': '/meta', 'text': '/tika', 'all': '/rmeta/xml'},
~\AppData\Local\Continuum\anaconda3\lib\site-packages\tika\tika.py in parse1(option, urlOrPath, serverEndpoint, verbose, tikaServerJar, responseMimeType, services, rawResponse, headers, config_path, requestOptions)
327 headers.update({'Accept': responseMimeType, 'Content-Disposition': make_content_disposition_header(path)})
328 status, response = callServer('put', serverEndpoint, service, open(path, 'rb'),
--> 329 headers, verbose, tikaServerJar, config_path=config_path, rawResponse=rawResponse, requestOptions=requestOptions)
330
331 if file_type == 'remote': os.unlink(path)
~\AppData\Local\Continuum\anaconda3\lib\site-packages\tika\tika.py in callServer(verb, serverEndpoint, service, data, headers, verbose, tikaServerJar, httpVerbs, classpath, rawResponse, config_path, requestOptions)
544
545 resp = verbFn(serviceUrl, encodedData, **effectiveRequestOptions)
--> 546 encodedData.close() # closes the file reading data
547
548 if verbose:
AttributeError: 'bytes' object has no attribute 'close'
J'ai également téléchargé Java 8.
Y a-t-il un problème dans le code source de tika.py? ou ai-je manqué quelque chose en termes de ce qui doit être installé? Toute aide serait très appréciée.
Solution trouvée
Reportez-vous au projet GitHub suivant où Trofleb a proposé une solution: