win10 环境下Python 3.8按装fastapi paddlepaddle 进行图片文字识别1

本文主要是介绍win10 环境下Python 3.8按装fastapi paddlepaddle 进行图片文字识别1,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

###按装
用conda 创建python 3.8的环境,可参看本人python下的其它文章。
在pycharm开发环境下按装相关的模块:

pip install -i https://pypi.tuna.tsinghua.edu.cn/simple fastapi
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple  "uvicorn[standard]"
pip install paddlepaddle -i https://mirror.baidu.com/pypi/simple
pip install "paddleocr>=2.0.1" -i https://mirror.baidu.com/pypi/simple
pip install  shapely -i https://mirror.baidu.com/pypi/simple

###开发代码:

# 导入requests库,用于发送HTTP请求
import requests
# 导入FastAPI库,用于构建高性能的Web应用程序
from fastapi import FastAPI
# 导入PaddleOCR及其draw_ocr方法,PaddleOCR是一个使用PaddlePaddle深度学习框架的OCR工具
from paddleocr import PaddleOCR, draw_ocr
# 导入BytesIO,用于在内存中处理二进制流
from io import BytesIO
# 导入PIL库中的Image模块,用于处理图像
from PIL import Image
import os# 初始化PaddleOCR实例,配置使用方向分类器、不使用GPU、识别中文
ocr = PaddleOCR(use_angle_cls=True, use_gpu=False, lang="ch")
# 创建一个FastAPI应用实例
app = FastAPI()# 定义一个异步的GET请求处理函数,路径为"/",接收一个名为url的查询参数
@app.get("/")
async def root(url: str):try:# 使用requests库发送GET请求,获取指定URL的图片,stream=True表示以流的形式下载大文件response = requests.get(url, stream=True)# 如果HTTP请求返回的状态码不是200,则引发HTTPError异常response.raise_for_status()# 检查响应头中的content-type是否包含'image',以确认返回的内容是图片if 'image' not in response.headers.get('content-type', ''):# 如果不是图片,返回错误信息,HTTP状态码为400(Bad Request)return {"error": "The provided URL does not point to an image."}, 400# 使用BytesIO将响应内容转换为二进制流image_bytes = BytesIO(response.content)# 使用PIL库打开二进制流中的图像image = Image.open(image_bytes)# 将图像保存到临时文件中(这里是为了适应PaddleOCR可能需要文件路径的API)# 注意:这里的代码实际上有一个逻辑错误,因为image.save()应该放在with语句块内以确保文件正确关闭temp_image_path = "temp_image.jpg"with open(temp_image_path, "wb") as image_file:image.save(image_file, format='JPEG')# 调用PaddleOCR的ocr方法进行OCR处理,cls=True表示使用分类器result = ocr.ocr(temp_image_path, cls=True)if os.path.exists(temp_image_path):os.remove(temp_image_path)results = []# 遍历最外层的列表for item in result:# 遍历内层的列表for sub_item in item:# 提取文本和可能性text = sub_item[1][0]  # 文本位于第二个子列表的第一个位置probability = sub_item[1][1]  # 可能性位于第二个子列表的第二个位置# 将提取的文本和可能性作为一个元组添加到结果列表中results.append((text, probability))# 返回OCR处理结果,封装在message字段中(注意:这里没有删除临时文件,可能会导致磁盘空间被占用)return {"message": results}except requests.exceptions.RequestException as e:# 如果在发送HTTP请求过程中发生异常,捕获异常并返回错误信息,HTTP状态码为500(Internal Server Error)return {"error": f"An error occurred while downloading the image: {str(e)}"}, 500except Exception as e:# 如果在处理过程中发生其他类型的异常,同样捕获异常并返回错误信息,HTTP状态码为500return {"error": f"An error occurred during OCR processing: {str(e)}"}, 500

在网上找一张图片:
https://img-s-msn-com.akamaized.net/tenant/amp/entityid/BB1ifoqa.img?w=768&h=662&m=6
在这里插入图片描述
运行代码:

uvicorn main:app --reload

返回结果:

{"message": [["狗仔说张天爱手撕徐开骋得罪了人,资源掉了不",0.9765021800994873],["少,最近一直没有新男友,是不是又怕被录音啊?",0.9926691055297852],["C薰衣草Sallie的微博视频",0.9560778737068176],["飞哥追瓜速报",0.9982643723487854],["快手搜索追瓜少年阿",0.8913857936859131]]
}

在这里插入图片描述

这篇关于win10 环境下Python 3.8按装fastapi paddlepaddle 进行图片文字识别1的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/714490

相关文章

Python脚本实现自动删除C盘临时文件夹

《Python脚本实现自动删除C盘临时文件夹》在日常使用电脑的过程中,临时文件夹往往会积累大量的无用数据,占用宝贵的磁盘空间,下面我们就来看看Python如何通过脚本实现自动删除C盘临时文件夹吧... 目录一、准备工作二、python脚本编写三、脚本解析四、运行脚本五、案例演示六、注意事项七、总结在日常使用

Python将大量遥感数据的值缩放指定倍数的方法(推荐)

《Python将大量遥感数据的值缩放指定倍数的方法(推荐)》本文介绍基于Python中的gdal模块,批量读取大量多波段遥感影像文件,分别对各波段数据加以数值处理,并将所得处理后数据保存为新的遥感影像... 本文介绍基于python中的gdal模块,批量读取大量多波段遥感影像文件,分别对各波段数据加以数值处

python管理工具之conda安装部署及使用详解

《python管理工具之conda安装部署及使用详解》这篇文章详细介绍了如何安装和使用conda来管理Python环境,它涵盖了从安装部署、镜像源配置到具体的conda使用方法,包括创建、激活、安装包... 目录pytpshheraerUhon管理工具:conda部署+使用一、安装部署1、 下载2、 安装3

Python进阶之Excel基本操作介绍

《Python进阶之Excel基本操作介绍》在现实中,很多工作都需要与数据打交道,Excel作为常用的数据处理工具,一直备受人们的青睐,本文主要为大家介绍了一些Python中Excel的基本操作,希望... 目录概述写入使用 xlwt使用 XlsxWriter读取修改概述在现实中,很多工作都需要与数据打交

使用MongoDB进行数据存储的操作流程

《使用MongoDB进行数据存储的操作流程》在现代应用开发中,数据存储是一个至关重要的部分,随着数据量的增大和复杂性的增加,传统的关系型数据库有时难以应对高并发和大数据量的处理需求,MongoDB作为... 目录什么是MongoDB?MongoDB的优势使用MongoDB进行数据存储1. 安装MongoDB

使用Python实现在Word中添加或删除超链接

《使用Python实现在Word中添加或删除超链接》在Word文档中,超链接是一种将文本或图像连接到其他文档、网页或同一文档中不同部分的功能,本文将为大家介绍一下Python如何实现在Word中添加或... 在Word文档中,超链接是一种将文本或图像连接到其他文档、网页或同一文档中不同部分的功能。通过添加超

Linux使用fdisk进行磁盘的相关操作

《Linux使用fdisk进行磁盘的相关操作》fdisk命令是Linux中用于管理磁盘分区的强大文本实用程序,这篇文章主要为大家详细介绍了如何使用fdisk进行磁盘的相关操作,需要的可以了解下... 目录简介基本语法示例用法列出所有分区查看指定磁盘的区分管理指定的磁盘进入交互式模式创建一个新的分区删除一个存

C#使用HttpClient进行Post请求出现超时问题的解决及优化

《C#使用HttpClient进行Post请求出现超时问题的解决及优化》最近我的控制台程序发现有时候总是出现请求超时等问题,通常好几分钟最多只有3-4个请求,在使用apipost发现并发10个5分钟也... 目录优化结论单例HttpClient连接池耗尽和并发并发异步最终优化后优化结论我直接上优化结论吧,

Python MySQL如何通过Binlog获取变更记录恢复数据

《PythonMySQL如何通过Binlog获取变更记录恢复数据》本文介绍了如何使用Python和pymysqlreplication库通过MySQL的二进制日志(Binlog)获取数据库的变更记录... 目录python mysql通过Binlog获取变更记录恢复数据1.安装pymysqlreplicat

利用Python编写一个简单的聊天机器人

《利用Python编写一个简单的聊天机器人》这篇文章主要为大家详细介绍了如何利用Python编写一个简单的聊天机器人,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 使用 python 编写一个简单的聊天机器人可以从最基础的逻辑开始,然后逐步加入更复杂的功能。这里我们将先实现一个简单的