Files
2026-07-13 13:26:09 +08:00

90 lines
3.3 KiB
Python

import os
import json
from alibabacloud_docmind_api20220711.client import Client as docmind_api20220711Client
from alibabacloud_tea_openapi import models as open_api_models
from alibabacloud_docmind_api20220711 import models as docmind_api20220711_models
from alibabacloud_tea_util.client import Client as UtilClient
from alibabacloud_tea_util import models as util_models
from alibabacloud_credentials.client import Client as CredClient
key = os.environ.get('IDP_KEY_ID')
secret = os.environ.get('IDP_KEY_SECRET')
class IDP():
def __init__(self):
config = open_api_models.Config(
access_key_id=key,
access_key_secret=secret
)
config.endpoint = f'docmind-api.cn-hangzhou.aliyuncs.com'
self.client = docmind_api20220711Client(config)
def file_submit_with_url(self, file_url):
print('parsing with document url ', file_url)
file_name = os.path.basename(file_url)
request = docmind_api20220711_models.SubmitDocParserJobAdvanceRequest(
file_url=file_url,
file_name=file_name,
reveal_markdown=True,
)
runtime = util_models.RuntimeOptions()
result_dict = None
try:
response = self.client.submit_doc_parser_job_advance(request,runtime)
result_dict = response.body.data.id
except Exception as error:
UtilClient.assert_as_string(error.message)
return result_dict
def file_submit_with_path(self, file_path):
print('parsing with document local path ', file_path)
file_name = os.path.basename(file_path)
request = docmind_api20220711_models.SubmitDocParserJobAdvanceRequest(
file_url_object=open(file_path, "rb"),
file_name=file_name,
)
runtime = util_models.RuntimeOptions()
result_dict = None
try:
response = self.client.submit_doc_parser_job_advance(request, runtime)
result_dict = response.body.data.id
except Exception as error:
print(error)
UtilClient.assert_as_string(error.message)
return result_dict
def file_parser_query(self,fid):
request = docmind_api20220711_models.QueryDocParserStatusRequest(
id=fid
)
try:
response = self.client.query_doc_parser_status(request)
NumberOfSuccessfulParsing = response.body.data
except Exception as e:
print(e)
return None
status_parse = response.body.data.status
NumberOfSuccessfulParsing = NumberOfSuccessfulParsing.__dict__
responses = dict()
for i in range(0, NumberOfSuccessfulParsing["number_of_successful_parsing"], 3000):
request = docmind_api20220711_models.GetDocParserResultRequest(
id=fid,
layout_step_size=3000,
layout_num=i
)
try:
response = self.client.get_doc_parser_result(request)
result = response.body.data
if not responses:
responses = result
else:
responses['layouts'].extend(result['layouts'])
except Exception as error:
return None,status_parse
return responses,status_parse