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
###按装 用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 "uvi…...
json字符串的处理
json字符串的处理 【1】解析json字符串(1)如果json格式字符串 ,最外层 是 中括号,表示数组,就使用方法(2)如果json格式字符串,最外层是 大括号,表示对象,就是…...
Java基础String常见的编程练习
1.对字符串数组进行排序 package javalianxi;import java.util.Arrays; import java.util.Comparator;public class Test1 {public static void main(String[] args) {String[] array { "cd", "CD", "bc", "AB", "ab", &q…...
代码随想录算法训练营(回溯5)| 491.递增子序列 46.全排列 47.全排列 II
491.递增子序列 本题和大家刚做过的 90.子集II 非常像,但又很不一样,很容易掉坑里。 题目链接/文章讲解 视频讲解 46.全排列 本题重点感受一下,排列问题 与 组合问题,组合总和,子集问题的区别。 为什么排列问题不用…...
专业140+总分420+南京信息工程大学811信号与系统考研经验南信大电子信息与通信工程,真题,大纲,参考书
今年顺利被南信大电子信息录取,初试420,专业811信号与系统140(Jenny老师辅导班上140很多,真是大佬云集),今年应该是南信大电子信息最卷的一年,复试线比往年提高了很多,录取平均分380…...
一元函数微分学【高数笔记】
1. 什么是微分?什么是微商? 2. 什么是函数的微分? 3. 在函数的微分中,有什么样的关系? 4. 一元函数的微分运用在什么题型中? 5. 什么是一元函数?...
(16)Hive——企业调优经验
前言 本篇文章主要整理hive-3.1.2版本的企业调优经验,有误请指出~ 一、性能评估和优化 1.1 Explain查询计划 使用explain命令可以分析查询计划,查看计划中的资源消耗情况,定位潜在的性能问题,并进行相应的优化。 explain执行计划…...
【详解】图的概念和存储结构(邻接矩阵,邻接表)
目录 图的基本概念: 图的存储结构 邻接矩阵(GraphByMatrix): 基本参数: 初始化: 获取顶点元素在其数组中的下标 : 添加边和权重: 获取顶点的度: 打印图…...
【AIGC】Stable Diffusion介绍
Stable Diffusion 是一个基于 OpenAI 的 Diffusion 模型的扩展版本,它采用了稳定扩散(Stable Diffusion)的技术,旨在提高图像生成和处理的质量。下面是 Stable Diffusion 的详细介绍: 基于 Diffusion 的图像生成&…...
2024.2.18 C++QT 作业
思维导图 练习题 1>定义一个基类 Animal,其中有一个虛函数perform(),用于在子类中实现不同的表演行为。 #include <iostream>using namespace std;class Animal { public:virtual void perform() {cout << "这是一个动…...
【qt创建线程两种方式】
QT使用线程的两种方式 1.案例进度条 案例解析: 如图由组件一个进度条和三个按钮组成,当点击开始的时候进度条由0%到100%,点击暂停,进度条保持之前进度,再次点击暂停变为继续,点击停止按钮进度条停止。 案…...
网络安全-一句话木马
声明 遵纪守法 请严格遵守网络安全法相关条例! 此分享主要用于交流学习,请勿用于非法用途,一切后果自付。 一切未经授权的网络攻击均为违法行为,互联网非法外之地。 反制 大家在知道了常规一句话的木马之后,就可以通…...
在k8s中,使用DirectPV CSI作为分布式存储的优缺点
DirectPV 提供了一种直接将物理卷(Physical Volumes)与 Kubernetes 集群中的 Pod 绑定的机制。 利用 DirectPV,你可以将相应的 PV 直接与节点上的物理存储设备(如磁盘)进行绑定,而无需通过网络存储服务(如 NFS 或 Ceph)来提供存储。这种直接访问物理卷的方式,有助于提…...
自动化AD域枚举和漏洞检测脚本
linWinPwn 是一个 bash 脚本,可自动执行许多 Active Directory 枚举和漏洞检查。该脚本基于很多现有工具实现其功能,其中包括:impacket、bloodhound、netexec、enum4linux-ng、ldapdomaindump、lsassy、smbmap、kerbrute、adidnsdump、certip…...
数据库管理-第151期 Oracle Vector DB AI-03(20240218)
数据库管理151期 2024-02-18 数据库管理-第151期 Oracle Vector DB & AI-03(20240218)1 向量数据库应用场景2 Oracle Vector DB3 Vector数据类型4 Vector运算5 Vector DML插入向量获取向量 总结 数据库管理-第151期 Oracle Vector DB & AI-03&am…...
Vue3+vite搭建基础架构(6)--- 使用vue-router
Vue3vite搭建基础架构(6)--- 使用vue-router 说明官方文档安装vue-router使用vue-router测试vue-router 说明 这里记录下自己在Vue3vite的项目使用vue-router的过程,不使用ts语法,方便以后直接使用。这里承接自己的博客Vue3vite搭…...
深入解析Android AIDL:实现跨进程通信的利器
深入解析Android AIDL:实现跨进程通信的利器 1. 介绍Android AIDL Android Interface Definition Language (AIDL) 是一种Android系统中的跨进程通信机制。AIDL允许一个应用程序的组件与另一个应用程序的组件通信,并在两者之间传输数据。 AIDL的主要作…...
【笔记】Helm-5 Chart模板指南-14 下一步
下一步 本指南旨在为chart开发者提供对如何使用Helm模板语言的强大理解能力。该模板聚焦于模板开发的技术层面。 但涉及到chart的实际日常开发时,很多内容本指南并没有覆盖到。这里有一些有用的文档链接帮助您创建新的chart: CNCF的 Artifact Hub 是ch…...
axios 官网速通
前言:参考 AXIOS 中文文档 一 起步 1. 介绍 1.1 Axios 是什么? Axios 是一个基于 promise 网络请求库,作用于 node.js 和浏览器中。在服务端使用 node.js 的 http 模块, 在客户端 (浏览端) 使用 XMLHttpRequests。 1.2 安装 $ npm instal…...
luigi,一个好用的 Python 数据管道库!
🏷️个人主页:鼠鼠我捏,要死了捏的主页 🏷️付费专栏:Python专栏 🏷️个人学习笔记,若有缺误,欢迎评论区指正 前言 大家好,今天为大家分享一个超级厉害的 Python 库 - luigi。 Github地址:https://github.com/spotify/luigi 在大数据时代,处理海量数据已经成…...
【JupyterLab实战】构建跨平台AI算力监控仪表盘
1. 为什么需要跨平台AI算力监控? 在AI开发过程中,我们经常遇到这样的场景:模型训练到一半突然卡死,却不知道是GPU内存爆了还是CPU瓶颈;多卡并行时某张卡莫名其妙跑不满;昇腾芯片的温度报警频繁触发却找不到…...
DOL-CHS-MODS整合包零基础精通指南:从安装到定制全方位教程
DOL-CHS-MODS整合包零基础精通指南:从安装到定制全方位教程 【免费下载链接】DOL-CHS-MODS Degrees of Lewdity 整合 项目地址: https://gitcode.com/gh_mirrors/do/DOL-CHS-MODS 项目价值定位 DOL-CHS-MODS作为Degrees of Lewdity的中文整合方案࿰…...
5分钟搞懂FGSM:用Python手把手教你生成第一个对抗样本(附代码)
5分钟搞懂FGSM:用Python手把手教你生成第一个对抗样本(附代码) 对抗样本生成听起来像是黑客的专属技能,但今天我要告诉你:用不到10行Python代码就能实现。去年我在一个图像识别项目中第一次遭遇对抗样本攻击——系统将…...
Phi-4-mini-reasoning效果对比:在GSM8K与AQuA数据集上的zero-shot推理表现
Phi-4-mini-reasoning效果对比:在GSM8K与AQuA数据集上的zero-shot推理表现 1. 模型介绍 Phi-4-mini-reasoning是一款专注于推理任务的文本生成模型,特别擅长处理需要多步逻辑分析和精确结论输出的任务场景。与通用对话模型不同,它被专门设计…...
请解释 Linux 系统中的内核模块管理,并描述如何加载和卸载模块。
在 Linux 系统中,内核模块(Kernel Modules) 是可以在不重新编译或重启内核的情况下,动态添加到运行中内核的代码片段。它们通常用于支持新的硬件设备、文件系统或网络协议。 这种机制使得 Linux 内核保持精简(核心功能…...
(全网最全)分享8款AI工具,毕业论文AIGC率速降至5%!
【CSDN AI底层算法专栏 / 核心摘要】 2026年,学术圈的反AI审查已经演变成了一场“算法级别的军备竞赛”。随着知网、万方全面接入大模型语义探针,靠改同义词、甚至靠传统Prompt洗稿的套路已全线崩溃。为了帮大家避坑,本期专栏我从代码和算法逻…...
Phi-4-mini-reasoning 128K上下文应用创新:法律条文交叉引用推理案例
Phi-4-mini-reasoning 128K上下文应用创新:法律条文交叉引用推理案例 1. 模型简介与核心能力 Phi-4-mini-reasoning 是一个轻量级开源模型,专注于高质量推理任务。作为Phi-4模型家族成员,它通过合成数据训练和微调,特别擅长处理…...
Phi-4-mini-reasoning实际作品:15个跨学科逻辑题(数学/哲学/计算机)解答集
Phi-4-mini-reasoning实际作品:15个跨学科逻辑题(数学/哲学/计算机)解答集 1. 模型能力概览 Phi-4-mini-reasoning是一个专注于推理任务的文本生成模型,特别擅长处理需要多步逻辑推导的问题。与通用聊天模型不同,它被…...
如何彻底解决ComfyUI ControlNet Aux预处理功能异常的5个专业策略
如何彻底解决ComfyUI ControlNet Aux预处理功能异常的5个专业策略 【免费下载链接】comfyui_controlnet_aux ComfyUIs ControlNet Auxiliary Preprocessors 项目地址: https://gitcode.com/gh_mirrors/co/comfyui_controlnet_aux ComfyUI ControlNet Aux作为ComfyUI的辅…...
3步搞定YOLO人脸检测:从零到生产级应用的完整实践指南
3步搞定YOLO人脸检测:从零到生产级应用的完整实践指南 【免费下载链接】yolo-face YOLO Face 🚀 in PyTorch 项目地址: https://gitcode.com/gh_mirrors/yo/yolo-face YOLO人脸检测技术正在改变计算机视觉应用的开发方式,无论你是想构…...
