Document processing API call script
Call the document details API using the obtained request headers
format='%(asctime)s - %(levelname)s - %(message)s'
logger = logging.getLogger(__name__)
async def get_request_headers(access_key: str = '') -> dict[str, Any]:
access_key: tenant-level key
logger.info("Start obtaining request headers")
# Simplified request header generation logic
'X-Access-Key': f'{access_key}', # Directly use a fixed access_key
'X-Timestamp': f'{time.time()}',
'X-Signature': uuid.uuid4().__str__().replace("-", ""),
logger.info(f"Request headers generated successfully: {headers}")
async def call_doc_api(base_url: str, file_url: str, file_base64: str, app_key: str, app_secret: str, tenant_name: str = 'laiye', access_key: str = '') -> dict[str, Any]:
Call the Document Details API
base_url: API base address
file_base64: File base64 encoding
tenant_name: tenant name
access_key: tenant-level key
dict: API response result
# Get the request headers
headers = await get_request_headers(access_key=access_key)
# Construct the request URL
api_url = f"{base_url}/open/agentic_doc_processor/{tenant_name}/v1/app/doc/extract"
# Construct the request body
"app_secret": app_secret,
# If file_base64 is provided, add it to the request body
request_data["file_base64"] = file_base64
request_data["file_url"] = file_url
logger.info(f"Call API: {api_url}")
logger.info(f"Request parameters: {request_data}")
async with aiohttp.ClientSession() as session:
async with session.post(api_url, headers=headers, json=request_data) as response:
response_data = await response.json()
logger.info(f"API response status code: {response.status}")
logger.info(f"API response data: {response_data}")
except aiohttp.ClientError as e:
logger.error(f"API call failed: {str(e)}")
return {"error": str(e)}
parser = argparse.ArgumentParser(description='Document processing API call script')
parser.add_argument('--base_url', default='https://adp.laiye.com', help='API base address')
parser.add_argument('--file_url', default='', help='File URL')
parser.add_argument('--file_base64', default='', help='File base64 encoding (optional)')
parser.add_argument('--tenant_name', default='laiye', help='tenant name')
parser.add_argument('--app_key', required=True, help='App Secret')
parser.add_argument('--app_secret', required=True, help='App Secret')
parser.add_argument('--access_key', required=True, help='tenant's auth key')
args = parser.parse_args()
result = await call_doc_api(
file_base64=args.file_base64,
app_secret=args.app_secret,
tenant_name=args.tenant_name,
access_key=args.access_key
print("API call completed")
print(f"Result: {result}")
logger.error(f"Script execution exception: {str(e)}")
if __name__ == "__main__":