| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109 |
- # -*- coding: utf-8 -*-
- # This file is auto-generated, don't edit it. Thanks.
- import json
- import os
- import sys
- from typing import List, Tuple, Any
- from alibabacloud_ocr_api20210707.client import Client as ocr_api20210707Client
- from alibabacloud_tea_openapi import models as open_api_models
- from alibabacloud_darabonba_stream.client import Client as StreamClient
- from alibabacloud_ocr_api20210707 import models as ocr_api_20210707_models
- from alibabacloud_tea_util import models as util_models
- from alibabacloud_tea_console.client import Client as ConsoleClient
- from alibabacloud_tea_util.client import Client as UtilClient
- class Sample:
- def __init__(self):
- pass
- @staticmethod
- def create_client() -> ocr_api20210707Client:
- """
- 使用AK&SK初始化账号Client
- @return: Client
- @throws Exception
- """
- # 工程代码泄露可能会导致 AccessKey 泄露,并威胁账号下所有资源的安全性。以下代码示例仅供参考。
- # 建议使用更安全的 STS 方式,更多鉴权访问方式请参见:https://help.aliyun.com/document_detail/378659.html。
- config = open_api_models.Config(
- # 必填,请确保代码运行环境设置了环境变量 ALIBABA_CLOUD_ACCESS_KEY_ID。,
- # access_key_id=os.environ['ALIBABA_CLOUD_ACCESS_KEY_ID'],
- access_key_id='LTAI5tSreWTgmQoCNE8NwKqn',
- # 必填,请确保代码运行环境设置了环境变量 ALIBABA_CLOUD_ACCESS_KEY_SECRET。,
- # access_key_secret=os.environ['ALIBABA_CLOUD_ACCESS_KEY_SECRET']
- access_key_secret='re273RJmgwt1Oh8uVZGweSaAggll9o'
- )
- # Endpoint 请参考 https://api.aliyun.com/product/ocr-api
- config.endpoint = f'ocr-api.cn-hangzhou.aliyuncs.com'
- return ocr_api20210707Client(config)
- @staticmethod
- def main(
- args: List[str],
- pic_path,
- ocr_type
- ) -> tuple[Any, Any]:
- far = None
- ticket_number = None
- client = Sample.create_client()
- # 需要安装额外的依赖库,直接点击下载完整工程即可看到所有依赖。
- body_stream = StreamClient.read_from_file_path(pic_path)
- recognize_all_text_request = ocr_api_20210707_models.RecognizeAllTextRequest(
- body=body_stream,
- type=ocr_type,
- output_figure=False,
- output_qrcode=False
- )
- runtime = util_models.RuntimeOptions()
- try:
- resp = client.recognize_all_text_with_options(recognize_all_text_request, runtime)
- data = json.loads(UtilClient.to_jsonstring(resp))
- if data['statusCode'] == 200:
- far = data['body']['Data']['SubImages'][0]['KvInfo']['KvDetails']['fare']['Value']
- ticket_number = data['body']['Data']['SubImages'][0]['KvInfo']['Data']['ticketNumber']
- ConsoleClient.log("far:" + far)
- ConsoleClient.log("ticketNumber:" + ticket_number)
- except Exception as error:
- # 此处仅做打印展示,请谨慎对待异常处理,在工程项目中切勿直接忽略异常。
- # 错误 message
- print(error.message)
- # 诊断地址
- print(error.data.get("Recommend"))
- UtilClient.assert_as_string(error.message)
- return far, ticket_number
- @staticmethod
- async def main_async(
- args: List[str],
- ) -> None:
- client = Sample.create_client()
- # 需要安装额外的依赖库,直接点击下载完整工程即可看到所有依赖。
- body_stream = StreamClient.read_from_file_path('uploads/20240301172645.jpg')
- recognize_all_text_request = ocr_api_20210707_models.RecognizeAllTextRequest(
- body=body_stream,
- type='TrainTicket',
- output_figure=False,
- output_qrcode=False
- )
- runtime = util_models.RuntimeOptions()
- try:
- resp = await client.recognize_all_text_with_options_async(recognize_all_text_request, runtime)
- ConsoleClient.log(UtilClient.to_jsonstring(resp))
- except Exception as error:
- # 此处仅做打印展示,请谨慎对待异常处理,在工程项目中切勿直接忽略异常。
- # 错误 message
- print(error.message)
- # 诊断地址
- print(error.data.get("Recommend"))
- UtilClient.assert_as_string(error.message)
- if __name__ == '__main__':
- Sample.main(sys.argv[1:], 'uploads/20240301172645.jpg', 'TrainTicket')
|