0

我已经成功地训练了一个用于键值提取的自定义模型,但是我用来评估模型的任何文件或文件类型都无法返回结果。到目前为止,我已经尝试了 pdf 和 png 文件。

我已经匹配了API 文档中提供的查询来创建我的查询,但它仍然失败,有什么建议吗?

import requests
import json
import os
import pathlib

# path of file to evaluate
floc = 'path/to/file'

# extract file type
file_type = pathlib.Path(floc).suffix[1:]

# set headers with file type and our api key
headers = {
    'Content-Type': f'application/{file_type}',
    'Ocp-Apim-Subscription-Key': os.environ["AZURE_FORM_RECOGNIZER_KEY"]
}

# read in the file as binary to send
files = {'file': open(floc, 'rb')}

# post the file to be analysed
r = requests.post(
    f'https://eastus.api.cognitive.microsoft.com/formrecognizer/v2.1/custom/models/{os.environ["MODEL_ID"]}/analyze',
    headers=headers,
    files=files
)

r

结果400出现以下错误:

{"error":{"code":"1000","message":"Invalid input file."}}

使用layout/analyze请求的非常相似的查询完美地工作。我也读过这个问题,它有同样的错误,但来自 cURL,但它没有帮助。

4

1 回答 1

0

我已经解决了我的问题,但会将我的答案留给其他任何人。

有两个主要问题:

修复如下:

import requests
import json
import os
import pathlib

# path of file to evaluate
floc = 'path/to/file'

# extract file type
file_type = pathlib.Path(floc).suffix[1:]

# set headers with file type and our api key
headers = {
    'Content-Type': f'application/{file_type}',
    'Ocp-Apim-Subscription-Key': os.environ["AZURE_FORM_RECOGNIZER_KEY"]
}

# post the file to be analysed
r = requests.post(
    f'{endpoint}/formrecognizer/v2.1/custom/models/{os.environ["MODEL_ID"]}/analyze',
    headers=headers, 
    data=open(floc, 'rb') # send binary of your file
)

r

endpoint您可以通过转到您的 form_recognizer 的 Azure 实例来找到自己的值:

表单识别器实例信息

于 2021-10-05T08:06:08.777 回答