Kaynağa Gözat

first commit

xubo 1 yıl önce
ebeveyn
işleme
c288c8a876

+ 0 - 5
alibabacloud_sample.egg-info/PKG-INFO

@@ -20,11 +20,6 @@ Classifier: Programming Language :: Python :: 3.9
 Classifier: Topic :: Software Development
 Requires-Python: >=3.6
 Description-Content-Type: text/markdown
-Requires-Dist: alibabacloud_ocr-api20210707<3.0.0,>=2.0.8
-Requires-Dist: alibabacloud_tea_openapi<1.0.0,>=0.3.8
-Requires-Dist: alibabacloud_tea_console<1.0.0,>=0.0.1
-Requires-Dist: alibabacloud_tea_util<1.0.0,>=0.3.11
-Requires-Dist: alibabacloud_darabonba_stream<1.0.0,>=0.0.1
 
 # OCR统一识别文档示例
 

+ 1 - 0
alibabacloud_sample.egg-info/SOURCES.txt

@@ -1,6 +1,7 @@
 README.md
 setup.py
 alibabacloud_sample/__init__.py
+alibabacloud_sample/file_utils.py
 alibabacloud_sample/sample.py
 alibabacloud_sample.egg-info/PKG-INFO
 alibabacloud_sample.egg-info/SOURCES.txt

+ 7 - 3
alibabacloud_sample/file_utils.py

@@ -31,14 +31,18 @@ def upload_file():
         print(f'filename: {filename}')
         file.save(os.path.join(app.config['UPLOAD_FOLDER'], filename))
         # 识别
-        far, ticket_number = Sample.main(sys.argv[1:], filename, file_type)
-        return f'{far}, {ticket_number}'
+        far, ticket_number = Sample.main(sys.argv[1:], f"{os.path.join(app.config['UPLOAD_FOLDER'])}/{filename}",file_type)
+        # return f'{far}, {ticket_number}'
         # return 'upload success'
+        return {
+            'far': far,
+            'ticket_number': ticket_number
+        }
 
 
 @app.route('/api/ocr', methods=['GET'])
 def get_pic_content():
-    far, ticket_number = Sample.main(sys.argv[1:], 'uploads/20240301172645.jpg', 'TrainTicket')
+    far, ticket_number = Sample.main(sys.argv[1:], 'uploads/3.pdf', 'TrainTicket')
     return f'{far}, {ticket_number}'
 
 

+ 0 - 1
alibabacloud_sample/sample.py

@@ -61,7 +61,6 @@ class Sample:
         runtime = util_models.RuntimeOptions()
         try:
             resp = client.recognize_all_text_with_options(recognize_all_text_request, runtime)
-            ConsoleClient.log(UtilClient.to_jsonstring(resp))
             data = json.loads(UtilClient.to_jsonstring(resp))
             if data['statusCode'] == 200:
                 far = data['body']['Data']['SubImages'][0]['KvInfo']['KvDetails']['fare']['Value']

BIN
alibabacloud_sample/uploads/-.JPG


BIN
alibabacloud_sample/uploads/10.jpg


BIN
alibabacloud_sample/uploads/3.pdf


+ 1 - 0
build/lib/alibabacloud_sample/__init__.py

@@ -0,0 +1 @@
+__version__ = "1.0.0"

+ 54 - 0
build/lib/alibabacloud_sample/file_utils.py

@@ -0,0 +1,54 @@
+import sys
+
+from flask import Flask, request
+from werkzeug.utils import secure_filename
+import os
+
+from alibabacloud_sample.sample import Sample
+
+app = Flask(__name__)
+app.config['UPLOAD_FOLDER'] = 'uploads'  # 替换为你的上传文件夹路径
+
+
+@app.route('/api/upload', methods=['POST'])
+def upload_file():
+    file_type = request.form.get('type')
+
+    if 'file' not in request.files:
+        return "No file part"
+    file = request.files['file']
+    if file.filename == '':
+        return "No selected file"
+    if file:  # 这里可以加文件类型判断逻辑
+        directory = os.path.join(app.config['UPLOAD_FOLDER'])
+        if not os.path.exists(directory):
+            os.makedirs(directory)
+            print(f"Directory '{directory}' created successfully.")
+        else:
+            print(f"Directory '{directory}' already exists.")
+
+        filename = secure_filename(file.filename)
+        print(f'filename: {filename}')
+        file.save(os.path.join(app.config['UPLOAD_FOLDER'], filename))
+        # 识别
+        far, ticket_number = Sample.main(sys.argv[1:], filename, file_type)
+        return f'{far}, {ticket_number}'
+        # return 'upload success'
+
+
+@app.route('/api/ocr', methods=['GET'])
+def get_pic_content():
+    far, ticket_number = Sample.main(sys.argv[1:], 'uploads/20240301172645.jpg', 'TrainTicket')
+    return f'{far}, {ticket_number}'
+
+
+@app.route('/', methods=['GET'])
+def hello():
+    return {
+        'message': 'Hello World!'
+    }
+
+
+if __name__ == '__main__':
+    # app.run(host='0.0.0.0', port=8000, debug=True)
+    app.run(port=8000, debug=True)

+ 110 - 0
build/lib/alibabacloud_sample/sample.py

@@ -0,0 +1,110 @@
+# -*- 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)
+            ConsoleClient.log(UtilClient.to_jsonstring(resp))
+            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')
+

BIN
dist/alibabacloud_sample-1.0.0-py3.11.egg