使用 Tika API 和 Python 的 Microsoft 文档出现 422 错误

422 error with Microsoft Documents using Tika API and Python

我在尝试使用 python 中的 /tika 端点通过 Tika REST API 处理 Microsoft 文档(.docx、.xlsx 等)时遇到 422 错误。

我已尝试通过确保在 header 中正确传递内容类型并将二进制文件传递到端点来解决此问题。

期待看到打印的 .docx 文件的内容。此代码适用于 .pdf 和 .txt,但 Microsoft 扩展的 none 有效。

def tika(files):
    url = 'https://[server_url]/tika'
    headers = {'Content-Type' : mimetype,'Cache-Control': 'no-cache'}
    r = requests.put(url, files=files, headers = headers)
    return r

if __name__ == "__main__":     

    from tkinter import filedialog
    from tkinter import *
    import json

    root = Tk()

    root.filename = filedialog.askopenfilename(parent=root,initialdir="/",title='Please select a file to scan')

    fin = open(root.filename, 'rb')

    files = {'files':fin}

    print ('Parsing File: ')

    mimetype = mimetypes.MimeTypes().guess_type(root.filename)[0]

    print (mimetype)

    r = tika(files)
    print (r.content)
    print(r.status_code)

我必须使用 /tika/form 端点而不是在 header 中声明 content-type 才能让事情正常进行。显然,请求 python 库将文件作为 multi-part 形式发布。