使用fastDeploy调用ocr遇到的问题

使用检测器将待识别目标图像截取出来后,送入ocr模型,发现识别结果完全不对,然而将crop_img保存到本地,然后在使用oencv读出来,再识别,结果就是正确的。

我比较了直接截取的图片和保存后再读取的图片,二者的bgr通道上会相差大约0-3的一个像素值。查看网上资料学习,说的是,保存图片时,会根据格式来进行一个压缩(大致是这意思)。

解决方法:截取的图片是一个ndarray,type是unit8的,将他改为float32就对了。

部分代码:

x1, y1, x2, y2 = int(x1), int(y1), int(x2), int(y2)
crop_img = data[y1:y2, x1:x2]
# cv2.imwrite('img/crop.jpg', crop_img)
crop_img_float = crop_img.astype(np.float32)# 这行很重要,T T
# cv2.imshow('crop', crop_img)
# cv2.waitKey(0)
rec_result1 = self.recognizer.predict(crop_img_float)
# crop = cv2.imread('img/crop.jpg')
# x = crop - crop_img
# print(x)
# rec_result = self.recognizer.predict(crop)
print(rec_result)

离谱,试了好久。

记录一下,免得搞忘

<think>好的,用户现在的问题是如何将FastDeployOCR功能集成到FastAPI项目中。我需要先理解他们的需求。用户可能已经了解FastDeployOCR能力,现在想通过FastAPI创建一个Web服务,比如提供一个API接口,上传图片,然后返回OCR识别的结果。这很常见,但具体步骤需要详细说明。 首先,我应该确认FastDeployOCR模块如何使用。根据之前的引用[1],用户可能已经配置好了FastDeploy的C++ SDK,但这里可能需要Python的接口,因为FastAPI是Python框架。可能需要检查FastDeploy的Python SDK文档,确保OCR模块的正确调用。 然后,考虑FastAPI的基本结构。需要创建一个POST端点,接收图片文件,调用OCR处理,返回结果。图片的上传通常使用File参数处理,可能需要用到PIL或OpenCV来读取图片。另外,要注意异步处理,如果OCR处理时间较长,可能需要使用BackgroundTasks或者异步函数来避免阻塞。 接下来是依赖安装。用户需要安装fastapi、uvicorn、fastdeploy等库。可能需要给出具体的pip安装命令,比如pip install fastapi uvicorn fastdeploy-python。 然后,代码示例的结构。首先导入必要的模块,比如FastAPI、File、UploadFile等。然后初始化FastDeployOCR模型,需要指定模型路径和运行时参数。这部分需要用户提前下载好模型文件,比如PP-OCRv3的模型,并正确配置路径。 处理函数部分,需要将上传的图片转换为模型可接受的格式。可能需要将UploadFile的内容读取为字节,然后转为numpy数组或OpenCV格式。处理完成后,返回结构化的结果,比如文本、置信度、位置坐标等。 另外,异常处理也很重要。比如处理无效文件、模型加载失败等情况,返回合适的HTTP状态码和错误信息。 最后,测试部分。指导用户如何运行应用,使用curl或Postman发送请求,并查看响应。可能还需要提示部署到生产环境时的注意事项,比如使用Gunicorn和多线程处理。 可能还需要考虑性能优化,比如模型初始化一次而不是每次请求都加载,使用缓存等。但用户当前的问题可能更关注基本集成,所以先提供基础示例,再在相关问题中提及优化方法。 用户可能遇到的问题包括模型路径错误、依赖缺失、图片格式不支持等,应该在注意事项里提醒。同时,参考引用[2]中提到的PaddleX 3.0的部署方案,可能FastDeploy有类似的优化策略,可以建议用户查阅相关文档进行性能调优。 总结步骤:安装依赖、编写FastAPI应用、初始化OCR模型、创建端点处理请求、转换图片、调用OCR、返回结果。同时给出示例代码,并说明如何运行和测试。相关问题可以涉及性能优化、错误处理、异步支持等。</think>以下是结合FastDeploy OCR与FastAPI的详细实现步骤: ### 一、环境准备 1. 安装依赖库 ```bash pip install fastapi uvicorn fastdeploy-python python-multipart opencv-python ``` ### 二、项目结构 ``` ocr_api/ ├── models/ │ ├── ch_PP-OCRv3_det_infer/ │ ├── ch_PP-OCRv3_rec_infer/ │ └── ch_ppocr_mobile_v2.0_cls_infer/ └── main.py ``` ### 三、核心代码实现 ```python from fastapi import FastAPI, File, UploadFile import fastdeploy.vision.ocr as ocr import cv2 import numpy as np app = FastAPI() # 初始化OCR模型 model = ocr.PPOCRv3( det_model="models/ch_PP-OCRv3_det_infer", rec_model="models/ch_PP-OCRv3_rec_infer", cls_model="models/ch_ppocr_mobile_v2.0_cls_infer", runtime_option=fastdeploy.RuntimeOption() ) @app.post("/ocr/") async def process_image(file: UploadFile = File(...)): # 转换图像格式 contents = await file.read() np_arr = np.frombuffer(contents, np.uint8) img = cv2.imdecode(np_arr, cv2.IMREAD_COLOR) # 执行OCR识别 result = model.predict(img) # 结构化返回结果 return { "texts": result.text, "scores": result.rec_scores.tolist(), "boxes": result.boxes.tolist() } ``` ### 四、运行与测试 1. 启动服务 ```bash uvicorn main:app --reload ``` 2. 测试接口(使用curl) ```bash curl -X POST -F "file=@test.jpg" http://127.0.0.1:8000/ocr/ ``` ### 五、性能优化建议 1. 启用异步处理时需注意模型线程安全性 2. 使用`gunicorn`部署时推荐配置: ```bash gunicorn -w 4 -k uvicorn.workers.UvicornWorker main:app ``` [^1]: FastDeploy C++ SDK编译文档中关于模块集成的说明 [^2]: PaddleX 3.0部署方案中关于服务化架构的设计理念
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值