表单识别器自定义模型失败,文件类型无效`{"error":{"code":"1000","message":"Invalid input file."}}`
Form Recognizer custom model fails with invalid file type `{"error":{"code":"1000","message":"Invalid input file."}}`
我已经成功地训练了用于键值提取的自定义模型,但是我用来评估模型的任何文件或文件类型都无法 return 结果。到目前为止,我已经尝试过 pdf 和 png 文件。
我已经匹配 the API docs 中提供的查询来创建我的查询,但它仍然失败,有什么建议吗?
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
请求的非常相似的查询非常有效。我也读过 this question 有同样的错误但来自 cURL 但它没有帮助。
我已经解决了我的问题,但我会为其他人留下我的答案。
主要有两个问题:
- 使用
files
而不是 data
发送 pdf
- 使用默认端点 (https://eastus.api.cognitive.microsoft.com) 而不是我自己的端点
修复如下:
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
您可以通过转到 form_recognizer:
的 Azure 实例来找到您自己的 endpoint
值
我已经成功地训练了用于键值提取的自定义模型,但是我用来评估模型的任何文件或文件类型都无法 return 结果。到目前为止,我已经尝试过 pdf 和 png 文件。
我已经匹配 the API docs 中提供的查询来创建我的查询,但它仍然失败,有什么建议吗?
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
请求的非常相似的查询非常有效。我也读过 this question 有同样的错误但来自 cURL 但它没有帮助。
我已经解决了我的问题,但我会为其他人留下我的答案。
主要有两个问题:
- 使用
files
而不是data
发送 pdf
- 使用默认端点 (https://eastus.api.cognitive.microsoft.com) 而不是我自己的端点
修复如下:
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
您可以通过转到 form_recognizer:
的 Azure 实例来找到您自己的endpoint
值