python调用al的ocr

最近学习了python调用al的ocr识别,跟大家分享下

import os
import yaml
import base64
import json
import urllib.request
##将图片生成符合要求的二进制数据
def img(image_path):
    with open(image_path, 'rb') as f:  # 以二进制读取本地图片
        data = f.read()
        encodestr = str(base64.b64encode(data),'utf-8') # base64编码图片
        return encodestr
def ocl():
    # 获取当前文件路径
    filePath = os.path.dirname(__file__)
    # 获取当前文件的
    fileNamePath = os.path.split(os.path.realpath(__file__))[0]
    # 获取配置文件的路径
    yamlPath = os.path.join(fileNamePath, 'OCRrecognition.yml')
    filetest = open(yamlPath, 'r', encoding='utf-8')
    f = filetest.read()
    con = yaml.load(f, Loader=yaml.FullLoader)
    list = con.get('aly')
    AppCode = list.get("AppCode")
    url="http://engcompos.market.alicloudapi.com/ocrservice/engcompos"
    # 图像数据:base64编码,要求base64编码后大小不超过4M,最短边至少15px,最长边最大4096px,支持jpg / png / bmp格式,和url参数只能同时存在一个
    # 图像url地址:图片完整URL,URL长度不超过1024字节,URL对应的图片base64编码后大小不超过4M,
    #最短边至少15px,最长边最大4096px,支持jpg / png / bmp格式,和img参数只能同时存在一个
    # 是否需要识别结果中每一行的置信度,默认不需要。 true:需要 false:不需要
    # 是否需要单字识别功能,默认不需要。 true:需要 #false:不需要
    #调用上方的方法,生成数据
    encodestr=img('C:/Users/Administrator/Desktop/ocr/ceshi8.png')
    #将数据放入date,根据al中api要求填写参数
    date={
   
   "img":encodestr ,
          #"url": "",
          "prob": "false",
          "charInfo":"true"
    }
    #将al的到appcode放入hand
    hand = {
   
   'Authorization':"APPCODE "+ AppCode,
            'Content-Type': 'application/json; charset=UTF-8'
            }
    #将参数序列化,不进行序列化会报错,但不知道为啥会报错        
    params = json.dumps(date).encode(encoding='UTF8')
    #执行请求
    req = urllib.request.Request(url, params, hand)
    r = urllib.request.urlopen(req)
    #打开
    html = r.read()
    # r.close();
    #进行json化
    jos = json.loads(html)
    print(jos,type(jos))
    #后续代码是根据一个栗子写的小处理
    date1=jos["prism_wordsInfo"]
    x = ""
    for c in range(len(date1)):
        # print(date1[c]['charInfo'])
        for b in range(len(date1[c]['charInfo'])):
            # print(date1[c]['charInfo'][b]['word'])
            d = ((date1[c]['charInfo'])[b]['word'])
            x = x + d
        x = x + "        /n   "
    # print(str(x))
    result = jos['content']  # 就可以按key取值了
    print(str(result))
    print('识别的结果:',str(x))
##date1=jos["prism_wordsInfo"]得到的数据
def da():
    date1 = [
        {
   
   'word': '().', 'pos': [{
   
   'x': 14, 'y': 21}, {
   
   'x': 165, 'y': 23}, {
   
   'x': 165, 'y': 40}, {
   
   'x': 14, 'y': 39}],
         'charInfo': [{
   
   'word': '下', 'x': 17, 'y': 22, 'w': 1, 'h': 15},
                      {
   
   'word': '列', 'x': 14, 'y': 22, 'w': 21, 'h': 15},
                      {
   
   'word': '说', 'x': 42, 'y': 22, 'w': 16, 'h': 15},
                      {
   
   'word': '去', 'x': 62, 'y': 22, 'w': 7, 'h': 15},
                      {
   
   'word': '正', 'x': 82, 'y': 22, 'w': 16, 'h': 15},
                      {
   
   'word': '确', 'x': 97, 'y': 22, 'w': 1, 'h': 15},
                      {
   
   'word': '的', 'x': 111, 'y': 23, 'w': 12, 'h': 15},
                      {
   
   'word': '是', 'x': 126, 'y': 23, 'w': 7, 'h': 15},
                      {
   
   'word': '(', 'x': 137, 'y': 23</
### 创建多功能AI工具箱 #### 使用Python开发带GUI的多功能AI工具箱概述 为了构建一个集成多种人工智能功能的应用程序,可以采用模块化设计方法。该应用程序不仅提供图形用户界面(Graphical User Interface, GUI),还支持文件操作、自然语言处理(Natural Language Processing, NLP)等功能[^1]。 #### 技术栈选择 对于此类项目,推荐的技术组合如下: - **Tkinter**: Python内置的标准GUI库,适合快速原型开发。 - **PyQt** 或 **wxPython**: 更加现代化的选择,适用于复杂应用。 - **transformers (Hugging Face)**: 提供预训练模型用于NLP任务. - **Flask/Django REST framework**: 实现API接口以便于扩展服务端能力. #### 功能实现细节 ##### AI翻译 通过调用外部API或利用本地部署的语言模型来完成文本之间的转换工作。例如,借助`transformers`库加载多语种翻译模型并执行推理过程[^2]. ```python from transformers import pipeline translator = pipeline("translation", model="Helsinki-NLP/opus-mt-en-zh") result = translator("Hello world!") print(result) ``` ##### AI问答系统 基于检索式或生成式的对话机器人架构,前者依赖搜索引擎技术从大量文档中提取答案;后者则运用深度学习算法自动生成回复内容[^3]. 下面是一个简单的例子展示如何初始化一个QA管道: ```python qa_pipeline = pipeline('question-answering', model='distilbert-base-cased-distilled-squad') context = "The Transformer architecture was introduced by Vaswani et al., 2017." question = "Who invented the transformer?" response = qa_pipeline(question=question, context=context) print(response['answer']) ``` ##### 文件上传与识别 允许用户提交各种类型的文件,并对其进行解析分析。这可能涉及到OCR(光学字符识别), 文档分类等多种子任务[^4]. 这里给出一段伪代码示意如何接收来自前端传入的数据流: ```python import os from flask import Flask, request app = Flask(__name__) @app.route('/upload', methods=['POST']) def upload_file(): file = request.files.get('file') filename = secure_filename(file.filename) filepath = os.path.join(app.config['UPLOAD_FOLDER'], filename) try: file.save(filepath) result = process_document(filepath) # 假设有一个函数process_document()用来处理文件 return {'status': 'success', 'data': result} except Exception as e: return {'error': str(e)} ``` ##### 自动代码生成功能 此特性旨在帮助开发者更高效地编写源码片段。可以通过定义特定领域内的模板或者规则集配合机器学习预测下一个最佳输入项[^5]. ```python class CodeGenerator: def __init__(self): pass def generate_code(self, prompt): """Generate code based on given natural language description.""" generated_text = some_magic_function(prompt) # 需要替换为实际逻辑 return generated_text ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值