web-dev-qa-db-ja.com

AttributeError:Tikaパーサーの実行時に 'bytes'オブジェクトに属性 'close'がありません

PDF(この例ではoutputFileNameという名前)からのテキストを解析するためにTikaを使用してコードの単純な解析行を実行しようとしています。これはエラーなしで実行されていました。最近ノートパソコンを私たちの仕事はソフトウェアの更新であり、Anacondaを再インストールして特定のモジュール(2019年11月9日にリリースされたTika 1.22など)をインポートしてコードを実行する必要がありました。Tikaからパーサーもインポートしました。コードの行とエラーは次のとおりです私が得るメッセージ:

コード:

#PDFファイルからテキストを解析して操作します

pdftext = parser.from_file(outputFileName)

エラー

    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'

私もダウンロードしましたJava 8。

Tika.pyソースコードに問題はありますか?または、何をインストールする必要があるかについて何かを見逃しましたか?どんな助けでも大歓迎です。

4
dweir247

見つかったソリューション

Troflebがソリューションを提案している次のGitHubプロジェクトを参照してください。

https://github.com/chrismattmann/tika-python/issues/252

1
dweir247