当前位置: 首页 > wzjs >正文

做静态网站的步骤为网站做电影花絮

做静态网站的步骤,为网站做电影花絮,网页设计策划案案模板,wordpress 网站搬家paddle ocr paddle ocr笔记准备工作referenceto onnx文本检测文本检测文字识别 paddle ocr笔记 准备工作 下载字典ppocr_keys_v1.txt,下标从1开始模型转换 reference paddlepaddle to onnx 下载模型,或者直接使用python跑一下并且把本地模型拿过来…

paddle ocr

  • paddle ocr笔记
    • 准备工作
    • reference
    • to onnx
    • 文本检测
    • 文本检测
    • 文字识别

paddle ocr笔记

准备工作

  1. 下载字典ppocr_keys_v1.txt,下标从1开始
  2. 模型转换

reference

  • paddlepaddle

to onnx

下载模型,或者直接使用python跑一下并且把本地模型拿过来用,一共三个模型:文本检测,文本方向校准,文字识别模型

paddle2onnx --model_dir ./det/ch/ch_PP-OCRv4_det_infer --model_filename inference.pdmodel  --params_filename inference.pdiparams  --save_file ./det-model.onnx  --opset_version 11  --enable_onnx_checker Truepaddle2onnx --model_dir ./rec/ch/ch_PP-OCRv4_rec_infer --model_filename inference.pdmodel  --params_filename inference.pdiparams  --save_file ./rec-model.onnx  --opset_version 11  --enable_onnx_checker Truepaddle2onnx --model_dir ./cls/ch_ppocr_mobile_v2.0_cls_infer --model_filename inference.pdmodel  --params_filename inference.pdiparams  --save_file ./cls-padmodel.onnx  --opset_version 11  --enable_onnx_checker True

文本检测

import onnxruntime
import cv2
import numpy as np# 读取图片
# image = cv2.imread("chinese.png")
image = cv2.imread("none.png")# 加载 ONNX 文本检测模型
det_session = onnxruntime.InferenceSession("./onnx/det-model.onnx")# 预处理
det_input = cv2.resize(image, (640, 640)) / 255.0  # 归一化
det_input = np.transpose(det_input, (2, 0, 1))[np.newaxis, :, :, :].astype(np.float32)# 推理
input_name = det_session.get_inputs()[0].name
output_name = det_session.get_outputs()[0].name
det_output = det_session.run([output_name], {input_name: det_input})[0]# 获取非零值的索引(文本区域)
non_zero_indices = np.nonzero(det_output)print(f'--------------------------')
print(f'len:{len(non_zero_indices[0])}')
# 打印非零值的索引及对应的值
for i in range(len(non_zero_indices[0])):print(f'--------------------------')coords = tuple(non_zero_indices[j][i] for j in range(len(non_zero_indices)))print(f"坐标: {coords}, 值: {det_output[coords]}")

文本检测

import onnxruntime
import cv2
import numpy as np# 读取图片
# image = cv2.imread("chinese.png")
# image = cv2.imread("none.png")
image = cv2.imread("oneline.png")# 加载 ONNX 文本检测模型
det_session = onnxruntime.InferenceSession("./onnx/det-model.onnx")# 预处理
det_input = cv2.resize(image, (640, 640)) / 255.0  # 归一化
# det_input = image / 255.0  # 归一化
det_input = np.transpose(det_input, (2, 0, 1))[np.newaxis, :, :, :].astype(np.float32)# 推理
input_name = det_session.get_inputs()[0].name
output_name = det_session.get_outputs()[0].name
det_output = det_session.run([output_name], {input_name: det_input})[0]#
#
#
# 获取非零值的索引(文本区域)
# non_zero_indices = np.nonzero(det_output)# print(f'--------------------------')
# print(f'len:{len(non_zero_indices[0])}')
# # 打印非零值的索引及对应的值
# for i in range(len(non_zero_indices[0])):
#     print(f'--------------------------')
#     coords = tuple(non_zero_indices[j][i] for j in range(len(non_zero_indices)))
#     print(f"坐标: {coords}, 值: {det_output[coords]}")# 5. 确保 `det_output` 是 4D (batch, channels, height, width)
print("det_output shape:", det_output.shape)# 6. 获取二值化文本区域
box_thresh = 0.3
text_mask = (det_output[0, 0, :, :] > box_thresh).astype(np.uint8) * 255# 7. 确保 `text_mask` 是单通道 2D 图像
print("text_mask shape:", text_mask.shape)  # 应该是 (height, width)# 8. 显示二值化结果(可选)
cv2.imshow("Text Mask", text_mask)
cv2.waitKey(0)
cv2.destroyAllWindows()# 9. 确保 `text_mask` 兼容 OpenCV
if len(text_mask.shape) == 3:text_mask = cv2.cvtColor(text_mask, cv2.COLOR_BGR2GRAY)# 10. 轮廓检测
contours, _ = cv2.findContours(text_mask, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)# 11. 打印检测到的文本框
for contour in contours:x, y, w, h = cv2.boundingRect(contour)print(f"检测到的文本框: x={x}, y={y}, w={w}, h={h}")

文字识别

import onnxruntime
import cv2
import numpy as np# 读取图片
image = cv2.imread("rec-cv2.imread.png")target_height = 48
h, w = image.shape[:2]
new_w = int(w * (target_height / h))
new_w = max(32, (new_w // 32) * 32)
image = cv2.resize(image, (new_w, target_height));
print(f'resize: {image.shape}')# image = cv2.imread("none.png")# 加载 ONNX 文本检测模型
rec_session = onnxruntime.InferenceSession("./onnx/rec-model.onnx")# 预处理
# rec_input = cv2.resize(image, (640, 640)) / 255.0  # 归一化
rec_input = image / 255.0  # 归一化
rec_input = np.transpose(rec_input, (2, 0, 1))[np.newaxis, :, :, :].astype(np.float32)print(f'shape: {rec_input.shape}')# 推理
input_name = rec_session.get_inputs()[0].name
output_name = rec_session.get_outputs()[0].name
print(f'input_name: {input_name}')
print(f'output_name: {output_name}')
rec_output = rec_session.run([output_name], {input_name: rec_input})[0]with open('onnx/dict.txt', 'r', encoding='utf-8') as f:dict_list = f.readlines()dict_list = [line.strip() for line in dict_list]# 返回下标的字典dict_index = {i + 1: char for i, char in enumerate(dict_list)}print(rec_output[0].shape)# 假设 rec_output[0] 的 shape 为 (60, 6625)
probabilities = rec_output[0]  # 取出 (60, 6625)# Step 1: 找到每个时间步概率最高的索引
max_indices = np.argmax(probabilities, axis=1)  # shape: (60,)# print(f'--dict: {dict_index}')
# Step 2: CTC 处理(去重)
decoded_text = []
prev_index = -1  # 记录前一个索引,避免重复
for index in max_indices:if index != prev_index and index in dict_index:  # 避免重复 & 确保索引合法print(f'--index: {index}, dict[{index}] = dict_index[{index}]')decoded_text.append(dict_index[index])prev_index = index# Step 3: 转换为字符串
decoded_text = "".join(decoded_text)print("识别结果:", decoded_text)

文章转载自:

http://MzIAywuy.ntffL.cn
http://FmwjTT2z.ntffL.cn
http://4eCvAzsb.ntffL.cn
http://B9gKfzr2.ntffL.cn
http://Z3aOY5qQ.ntffL.cn
http://tfd30nTE.ntffL.cn
http://j2zELerF.ntffL.cn
http://b8mpwBCw.ntffL.cn
http://EFPpywCO.ntffL.cn
http://0ePptlzh.ntffL.cn
http://orFDmofp.ntffL.cn
http://aeXnt5zc.ntffL.cn
http://ZQ5pD1SL.ntffL.cn
http://oFYjGUks.ntffL.cn
http://Ng9JgtWi.ntffL.cn
http://kZGLzlNF.ntffL.cn
http://NBHNa724.ntffL.cn
http://47UaoM3l.ntffL.cn
http://0a5KWeZn.ntffL.cn
http://pXfHC4jA.ntffL.cn
http://ViFPhWCa.ntffL.cn
http://ePokaXv5.ntffL.cn
http://PooqMJqS.ntffL.cn
http://I2BO4WX8.ntffL.cn
http://h5MEPrzV.ntffL.cn
http://nxrs15E2.ntffL.cn
http://P3yG4M8a.ntffL.cn
http://Po9heHym.ntffL.cn
http://XHE3lyya.ntffL.cn
http://fgyGEZmI.ntffL.cn
http://www.dtcms.com/wzjs/641920.html

相关文章:

  • 镇海区住房和建设网站网站建设哪家最好用
  • 成都优化网站wordpress加链接地址
  • 网站排名优化策划wordpress需要 伪静态
  • golang 网站开发 开源高端网站开发平台
  • 如果自己制作网站龙岗网站建设推广报价
  • 小型网站设计及建设论文文献cc0图片素材网站
  • 东莞网站seo技术做招聘的网站有哪些
  • 禹州做网站的公司仙居网站开发
  • 做网站免费景点网站设计与制作
  • 中山小型网站建设公司小说网站开发的看书软件
  • 电子商务网站建设课后答案做书app下载网站有哪些
  • 电商网站功能介绍平面设计需要学什么软件?
  • 公司网站建设建议营销推广方法有哪些
  • 做外贸网站能用虚拟主机吗360网站排名怎么做
  • 扬州企业做网站支付商城网站制作
  • 请网站制作公司费用搜索引擎优化总结感悟
  • 昆明优化网站深圳罗湖区地址随便来一个
  • 襄阳电商网站建设商城网站如何搭建
  • 成都便宜做网站的电商平台怎么注册
  • php钓鱼网站怎么做视频教程上海到北京的火车
  • 网站模版化配置google网页版登录入口
  • 莱州做网站的公司个人博客网站制作搭建
  • 有什么网站开发客户网站没有域名设置
  • 合肥网站推广公司做动画网站
  • 淮南建网站公司做繁体书的网站
  • 网站域名和空间费用网站流量提供商
  • 如何保护我做的网站模板手机app开发与应用
  • 北京网站托管的公司简单的html网站开发
  • 门户网站建设目的php 网站开发教程
  • wordpress培训类网站模板青海网站建设价格低