打造自己的RAG解析大模型:Windows部署OCR服务(可商业应用)

在上一篇文章中,我们介绍了如何在 Windows 环境中配置 OCR 相关模型,并完成了模型验证。本篇文章将基于之前的内容,进一步讲解如何将文本检测、方向分类和文本识别模型进行串联,最终搭建一个基础的 OCR 应用服务。通过这些模型的串联与部署,我们将能够创建一个可商用的 OCR 系统,从而满足更复杂的文档解析需求,并为未来自定义训练模型的服务部署奠定坚实的基础。

模型串联推理过程介绍

PaddleOCR 提供了一种方便的检测与识别模型串联工具,能够高效实现两阶段的文本识别系统。该系统通过将检测模型与识别模型相结合,实现从图像到文本的精准转换。以下是整个串联过程的详细描述:

1. 文本检测阶段

首先,输入的图像会经过文本检测模型。这一模型负责定位图像中可能包含文本的区域,输出相应的文本边界框。PaddleOCR 提供了多种检测模型,如 DB、EAST 等,能够根据不同场景需求进行选择。这一步的关键在于准确检测文本区域,为后续的识别提供基础。

2. 检测框矫正

为了提高文本识别的精度,检测框会进行几何矫正。此步骤通过调整检测出的文本区域,使文本框尽量贴合文字内容,避免由于倾斜、变形等因素造成的识别误差。通过这一步,可以极大地提升对不同角度、排列文本的识别效果。

3. 文本识别

经过矫正后的文本框会输入到文本识别模型中进行文字内容的识别。PaddleOCR 提供了多种识别模型(如 CRNN、RARE 等),这些模型通过深度学习方法,将输入的图像区域转换为实际的字符序列,生成识别文本。

4. 得分过滤

在文本识别过程中,系统还会为每个检测和识别结果打分。通过设定一定的置信度阈值,系统可以过滤掉低置信度的检测结果,确保最终输出的文本更加准确。这一步通过调整过滤标准,可以根据不同任务场景的需求来平衡识别的精度和召回率。

文本检测、文本识别串联模型推理验证:

1.打开Anaconda Prompt终端:在Windows桌面左下角Windows Start Menu -> Anaconda3 -> Anaconda Prompt启动控制台,进入E:\paddle_ocr\PaddleOCR源码路径下,执行以下命令激活PaddleOCR的Python环境。

conda activate paddle_env

2. 执行串联模型推理命令

python ./tools\infer\predict_system.py --image_dir="./doc\imgs\00018069.jpg" --det_model_dir="./inference\ch_PP-OCRv4_det_infer" --cls_model_dir="./inference\ch_ppocr_mobile_v2.0_cls_infer" --rec_model_dir="./inference\ch_PP-OCRv4_rec_infer" --use_angle_cls=true --use_gpu=False

**推理结果:**形成可视化结果图片和Json文件。

串联模型推理可视化结果如下图:

Json结果部分展示:

[`  `{`    `"transcription": "代号",`    `"points": [`      `[`        `19,`        `1`      `],`      `[`        `54,`        `1`      `],`      `[`        `54,`        `21`      `],`      `[`        `19,`        `21`      `]`    `]`  `}``]

在 PaddleOCR 的推理过程中,模型的配置对识别精度和效率至关重要。以下是关于模型推理的关键参数配置说明,特别是 use_angle_cls 参数,它决定了是否启用方向分类模型。

主要参数说明:

  1. image_dir: 用于指定输入图像的路径,可以是单张图像或一组图像的文件夹路径。

  2. det_model_dir: 用于指定检测模型的路径,该模型负责识别图像中的文本区域。

  3. rec_model_dir: 用于指定识别模型的路径,该模型将检测到的文本区域转换为字符序列。

  4. cls_model_dir: 用于指定方向分类模型的路径,该模型用于矫正文本的方向。

  5. use_angle_cls: 控制是否启用方向分类模型。

关于 use_angle_cls 的详细说明:

use_angle_cls 参数用于控制是否启用方向分类模型。方向分类模型的主要功能是判断和校正图像中检测到的文本方向,尤其是在图像中出现旋转、倾斜或倒置文本的情况下。通过这个模型,系统能够先对文本方向进行分类和矫正,再进行文字识别,以提高识别的准确性。

何时需要启用方向分类模型?

在以下情况下,启用方向分类模型(即将 use_angle_cls 设置为 True)是必要的:

  • 文本方向不一致:当图像中包含多个方向的文本,如有水平、垂直、旋转甚至倒置的文字时,方向分类模型能够自动判断文本方向并进行调整。

  • 文档扫描场景:在扫描文件或票据时,文本区域可能存在不同角度的排布,尤其是在手持拍摄的图像中,方向分类模型可以显著提高识别的精度。

  • 票据和票证处理:有时在处理发票或表单时,文本区域可能是倒置的或倾斜的。方向分类模型可以确保即使文本方向不正确,模型仍然能准确识别文字。

何时不需要启用方向分类模型?

如果输入图像中的文本方向已经是固定的(如整齐的水平文本),且图像预处理阶段已经保证了文本的正确方向,那么可以关闭方向分类模型(即将 use_angle_cls 设置为 False),以节省推理时间和计算资源。

基于PaddleHub Serving的服务部署

PaddleOCR提供2种服务部署方式:

  • 基于PaddleHub Serving的部署:代码路径为./deploy/hubserving

  • 基于PaddleServing的部署:代码路径为./deploy/pdserving

PaddleHub Serving 是 PaddleOCR 提供的一种部署服务方式,用于快速构建和发布 OCR 服务。在 PaddleHub Serving 部署中,您可以通过其模块化、易用的 API 结构,快速将 PaddleOCR 模型部署为在线服务。

hubserving服务部署目录下包括文本检测、文本方向分类,文本识别、文本检测+文本方向分类+文本识别3阶段串联,版面分析、表格识别和PP-Structure七种服务包,请根据需求选择相应的服务包进行安装和启动。目录结构如下:

deploy/hubserving/`  `└─  ocr_cls     文本方向分类模块服务包`  `└─  ocr_det     文本检测模块服务包`  `└─  ocr_rec     文本识别模块服务包`  `└─  ocr_system  文本检测+文本方向分类+文本识别串联服务包`  `└─  structure_layout  版面分析服务包`  `└─  structure_table  表格识别服务包`  `└─  structure_system  PP-Structure服务包`  `└─  kie_ser  关键信息抽取-SER服务包`  `└─  kie_ser_re  关键信息抽取-SER+RE服务包

每个服务包下包含3个文件。以2阶段串联ocr_system服务包为例,目录如下:

deploy/hubserving/ocr_system/`  `└─  __init__.py    空文件,必选`  `└─  config.json    配置文件,可选,使用配置启动服务时作为参数传入`  `└─  module.py      主模块,必选,包含服务的完整逻辑`  `└─  params.py      参数文件,必选,包含模型路径、前后处理参数等参数

安装PaddleHub

进入E:\paddle_ocr\PaddleOCR源码路径下,在praddle_env的Python的环境下,执行以下命令安装PaddleHub最新版本。

pip3 install paddlehub --upgrade -i https://mirrors.aliyun.com/pypi/simple/

1. 下载推理模型

安装服务模块前,需要准备推理模型并放到正确路径。默认模型路径为:

模型路径
检测模型./inference/ch_PP-OCRv4_det_infer/
识别模型./inference/ch_PP-OCRv4_rec_infer/
方向分类器./inference/ch_ppocr_mobile_v2.0_cls_infer/

模型路径可在params.py中查看和修改,可以替换成自己训练转换好的模型。

2. 安装服务模块

PaddleOCR提供5种服务模块,以2阶段串联ocr_system服务包为例,在Linux环境(Windows环境请将/替换为\)下,安装模块命令如下表:

服务模块命令
检测+识别串联hub install deploy/hubserving/ocr_system
# 执行模型安装命令``hub install deploy\hubserving\ocr_system

3. 启动服务

启动2阶段串联ocr_system服务,端口默认8866,并发任务数,默认为2*cpu_count-1。

# 执行启动命令后,见到如下界面说明服务已启动``hub serving start -m ocr_system

4. 请求服务

进入E:\paddle_ocr\PaddleOCR源码路径下,在praddle_env的Python的环境下,执行以下命令,验证已启动服务是否可用。

python ./tools\test_hubserving.py --server_url=http://127.0.0.1:8866/predict/ocr_system --image_dir=./doc\imgs/00018069.jpg --visualize=false

执行结果如下:

[{'confidence': 0.999848484992981, 'text': '代号', 'text_region': [[19, 1], [54, 1], [54, 21], [19, 21]]}, {'confidence': 0.9992080926895142, 'tex``t': '项目', 'text_region': [[124, 2], [159, 2], [159, 21], [124, 21]]}, {'confidence': 0.9987339973449707, 'text': '结果', 'text_region': [[232, 1], [268, 1], [268, 21], [232, 21]]``}, {'confidence': 0.9997586607933044, 'text': '参考值', 'text_region': [[296, 1], [347, 1], [347, 20], [296, 20]]}, {'confidence': 0.9999487996101379, 'text': '单位', 'text_region'``: [[376, 1], [411, 1], [411, 21], [376, 21]]}, {'confidence': 0.9965283274650574, 'text': 'ALT', 'text_region': [[24, 23], [51, 23], [51, 39], [24, 39]]}, {'confidence': 0.99857491``25480652, 'text': '谷丙转氨酶', 'text_region': [[100, 20], [185, 20], [185, 41], [100, 41]]}, {'confidence': 0.9979120492935181, 'text': '25.6', 'text_region': [[233, 23], [269, 23``], [269, 39], [233, 39]]}, {'confidence': 0.9666016697883606, 'text': '0--40', 'text_region': [[299, 22], [345, 22], [345, 40], [299, 40]]}, {'confidence': 0.8711754679679871, 'tex``t': 'U/L', 'text_region': [[378, 21], [408, 21], [408, 40], [378, 40]]}, {'confidence': 0.9945583343505859, 'text': 'TBIL', 'text_region': [[19, 41], [55, 41], [55, 59], [19, 59]]}``, {'confidence': 0.9986435770988464, 'text': '总胆红素', 'text_region': [[110, 39], [177, 39], [177, 60], [110, 60]]}, {'confidence': 0.9964954853057861, 'text': '11.2', 'text_regi``on': [[232, 41], [270, 41], [270, 59], [232, 59]]}, {'confidence': 0.949794352054596, 'text': '<20', 'text_region': [[308, 41], [338, 41], [338, 59], [308, 59]]}, {'confidence': 0.``9597413539886475, 'text': 'umol/L', 'text_region': [[367, 41], [420, 41], [420, 59], [367, 59]]}, {'confidence': 0.9963439702987671, 'text': 'DBIL', 'text_region': [[19, 59], [55,` `59], [55, 78], [19, 78]]}, {'confidence': 0.9987521171569824, 'text': '直接胆红素', 'text_region': [[102, 58], [184, 58], [184, 79], [102, 79]]}, {'confidence': 0.9962077140808105,` `'text': '3.3', 'text_region': [[235, 59], [266, 59], [266, 78], [235, 78]]}, {'confidence': 0.7987732291221619, 'text': '0--7', 'text_region': [[304, 60], [340, 60], [340, 76], [3``04, 76]]}, {'confidence': 0.949164867401123, 'text': 'umol/L', 'text_region': [[368, 59], [420, 59], [420, 78], [368, 78]]}, {'confidence': 0.9881249666213989, 'text': 'IBIL', 'tex``t_region': [[20, 78], [54, 78], [54, 97], [20, 97]]}, {'confidence': 0.9977105259895325, 'text': '间接胆红素', 'text_region': [[102, 77], [184, 77], [184, 98], [102, 98]]}, {'confi``dence': 0.9968709945678711, 'text': '7.9', 'text_region': [[235, 78], [266, 78], [266, 97], [235, 97]]}, {'confidence': 0.9892260432243347, 'text': '1.5--15', 'text_region': [[291,` `79], [350, 79], [350, 94], [291, 94]]}, {'confidence': 0.9596831798553467, 'text': 'umol/L', 'text_region': [[369, 79], [420, 79], [420, 97], [369, 97]]}, {'confidence': 0.9953203``201293945, 'text': 'TP', 'text_region': [[27, 98], [48, 98], [48, 116], [27, 116]]}, {'confidence': 0.9998953342437744, 'text': '总蛋白', 'text_region': [[118, 97], [166, 97], [166``, 116], [118, 116]]}, {'confidence': 0.9984322190284729, 'text': '58.9', 'text_region': [[224, 98], [272, 98], [272, 116], [224, 116]]}, {'confidence': 0.9880561828613281, 'text':` `'60--80', 'text_region': [[297, 98], [349, 98], [349, 116], [297, 116]]}, {'confidence': 0.9866965413093567, 'text': 'g/L', 'text_region': [[379, 98], [408, 98], [408, 118], [379,` `118]]}, {'confidence': 0.998601496219635, 'text': 'ALB', 'text_region': [[24, 118], [51, 118], [51, 135], [24, 135]]}, {'confidence': 0.9997892379760742, 'text': '白蛋白', 'text_re``gion': [[118, 112], [169, 115], [168, 137], [116, 134]]}, {'confidence': 0.9980158805847168, 'text': '35.1', 'text_region': [[232, 117], [269, 117], [269, 136], [232, 136]]}, {'con``fidence': 0.9636005759239197, 'text': '33--55', 'text_region': [[296, 117], [348, 117], [348, 135], [296, 135]]}, {'confidence': 0.957646906375885, 'text': 'g/L', 'text_region': [[``378, 118], [407, 115], [409, 135], [380, 138]]}, {'confidence': 0.9895787239074707, 'text': 'GLO', 'text_region': [[24, 137], [51, 137], [51, 153], [24, 153]]}, {'confidence': 0.99``96899962425232, 'text': '球蛋白', 'text_region': [[117, 136], [167, 136], [167, 153], [117, 153]]}, {'confidence': 0.997654914855957, 'text': '23.8', 'text_region': [[232, 136], [2``70, 136], [270, 154], [232, 154]]}, {'confidence': 0.992893636226654, 'text': '20--30', 'text_region': [[296, 136], [349, 136], [349, 153], [296, 153]]}, {'confidence': 0.937683820``7244873, 'text': 'g/L', 'text_region': [[378, 137], [407, 134], [409, 154], [380, 157]]}, {'confidence': 0.994020402431488, 'text': 'A/G', 'text_region': [[24, 155], [51, 155], [51``, 172], [24, 172]]}, {'confidence': 0.9995932579040527, 'text': '白球比', 'text_region': [[119, 154], [168, 154], [168, 173], [119, 173]]}, {'confidence': 0.997298538684845, 'text'``: '1.5', 'text_region': [[234, 154], [266, 154], [266, 173], [234, 173]]}, {'confidence': 0.9626685380935669, 'text': '1.5--2.5', 'text_region': [[287, 155], [357, 155], [357, 173]``, [287, 173]]}, {'confidence': 0.9928719401359558, 'text': 'ALP', 'text_region': [[21, 175], [50, 171], [52, 191], [23, 195]]}, {'confidence': 0.9545178413391113, 'text': '碱性磷酸``', 'text_region': [[100, 172], [184, 172], [184, 193], [100, 193]]}, {'confidence': 0.9982390403747559, 'text': '93', 'text_region': [[240, 175], [260, 175], [260, 192], [240, 19 9``2]]}, {'confidence': 0.9920914769172668, 'text': '15--112', 'text_region': [[290, 173], [354, 173], [354, 194], [290, 194]]}, {'confidence': 0.9722098708152771, 'text': 'IU/L', 'text_region': [[376, 175], [410, 175], [410, 191], [376, 191]]}, {'confidence': 0.998141348361969, 'text': 'GGT', 'text_region': [[24, 194], [50, 194], [50, 211], [24, 211]]}, {'confidence': 0.9910216331481934, 'text': '谷氨酰转肽酶', 'text_region': [[98, 192], [188, 192], [188, 210], [98, 210]]}, {'confidence': 0.9981499314308167, 'text': '14.3', 'text_region32, 193], [270, 193], [270, 212], [232, 212]]}, {'confidence': 0.96588134765625, 'text': '<50', 'text_region': [[310, 194], [337, 194], [337, 211], [310, 211]]}, {'confidence': 0.9874141812324524, 'text': 'U/L', 'text_region': [[379, 194], [406, 194], [406, 211], [379, 211]]}, {'confidence': 0.9977130889892578, 'text': 'AST', 'text_region': [[24, 213], [50, 213], [50, 229], [24, 229]]}, {'confidence': 0.9985289573669434, 'text': '谷草转氨酶', 'text_region': [[100, 208], [185, 211], [185, 232], [99, 229]]}, {'confidence': 0.9976338744163513, 'text': '16.3', 'text_region': [[232, 212], [270, 212], [270, 230], [232, 230]]}, {'confidence': 0.9725760221481323, 'text': '8--40', 'text_region': [[298, 213], [345, 213], [345, 230], [298, 230]]}, {'confidence': 0.9855239391326904, 'text': 'U/L', 'text_region': [[379, 213], [406, 213], [406, 229], [379, 229]]}, {'confidence': 0.9941731095314026, 't26, 'text': 'LDH', 'text_region': [[23, 230], [53, 230], [53, 249], [23, 249]]}, {'confidence': 0.9993842840194702, 'text': '乳酸脱氢酶', 'text_region': [[101, 230], [184, 230], [148], [101, 248]]}, {'confidence': 0.9987676739692688, 'text': '167', 'text_region': [[235, 230], [265, 230], [265, 249], [235, 249]]}, {'confidence': 0.9886070489883423, 'text': '114--240', 'text_region': [[287, 232], [358, 232], [358, 249], [287, 249]]}, {'confidence': 0.987419605255127, 'text': 'U/L', 'text_region': [[379, 232], [406, 232], [406, 248], [379, 248]]}, {'confidence': 0.9958209991455078, 'text': 'ADA', 'text_region': [[24, 250], [51, 250], [51, 266], [24, 266]]}, {'confidence': 0.9985343813896179, 'text': '腺甘脱氨酶', _region': [[103, 250], [183, 250], [183, 265], [103, 265]]}, {'confidence': 0.9976718425750732, 'text': '12.6', 'text_region': [[233, 250], [269, 250], [269, 266], [233, 266]]}, {'confidence': 0.9742022752761841, 'text': '4--24', 'text_region': [[299, 249], [345, 249], [345, 266], [299, 266]]}, {'confidence': 0.9864771366119385, 'text': 'U/L', 'text_region': [[379, 250], [407, 250], [407, 266], [379, 266]]}]

结果说明:

返回结果为列表(list),列表中的每一项为词典(dict),词典一共可能包含3种字段,信息如下:

字段名称数据类型意义
anglestr文本角度
textstr文本内容
confidencefloat文本识别置信度或角度分类置信度
text_regionlist文本位置坐标

总结

文本检测、方向分类器和文本识别服务成功发布后,整个系统便可以解析PDF、图片等文档中的文本内容。PaddleOCR的hubserving还能将表格识别、版面分析模型一同串联发布,从而构建一个完整的文档解析服务,对PDF文档实现更全面的处理。此外,还可以通过SER模型发布实现对发票、证件等文档的关键信息抽取。该架构最大的优势在于支持自定义训练的模型发布,用户能够根据行业需求精调、微调模型。未来,我们将重点介绍行业模型的标注、训练与部署,敬请期待。

如何学习AI大模型 ?

“最先掌握AI的人,将会比较晚掌握AI的人有竞争优势”。

这句话,放在计算机、互联网、移动互联网的开局时期,都是一样的道理。

我在一线互联网企业工作十余年里,指导过不少同行后辈。帮助很多人得到了学习和成长。

我意识到有很多经验和知识值得分享给大家,故此将并将重要的AI大模型资料包括AI大模型入门学习思维导图、精品AI大模型学习书籍手册、视频教程、实战学习等录播视频免费分享出来。【保证100%免费】🆓

对于0基础小白入门:

如果你是零基础小白,想快速入门大模型是可以考虑的。

一方面是学习时间相对较短,学习内容更全面更集中。
二方面是可以根据这些资料规划好学习计划和方向。

😝有需要的小伙伴,可以VX扫描下方二维码免费领取🆓

👉1.大模型入门学习思维导图👈

要学习一门新的技术,作为新手一定要先学习成长路线图,方向不对,努力白费。

对于从来没有接触过AI大模型的同学,我们帮你准备了详细的学习成长路线图&学习规划。可以说是最科学最系统的学习路线,大家跟着这个大的方向学习准没问题。(全套教程文末领取哈)
在这里插入图片描述

👉2.AGI大模型配套视频👈

很多朋友都不喜欢晦涩的文字,我也为大家准备了视频教程,每个章节都是当前板块的精华浓缩。

在这里插入图片描述
在这里插入图片描述

👉3.大模型实际应用报告合集👈

这套包含640份报告的合集,涵盖了AI大模型的理论研究、技术实现、行业应用等多个方面。无论您是科研人员、工程师,还是对AI大模型感兴趣的爱好者,这套报告合集都将为您提供宝贵的信息和启示。(全套教程文末领取哈)

在这里插入图片描述

👉4.大模型落地应用案例PPT👈

光学理论是没用的,要学会跟着一起做,要动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。(全套教程文末领取哈)

在这里插入图片描述

👉5.大模型经典学习电子书👈

随着人工智能技术的飞速发展,AI大模型已经成为了当今科技领域的一大热点。这些大型预训练模型,如GPT-3、BERT、XLNet等,以其强大的语言理解和生成能力,正在改变我们对人工智能的认识。 那以下这些PDF籍就是非常不错的学习资源。(全套教程文末领取哈)
img

在这里插入图片描述

👉6.大模型面试题&答案👈

截至目前大模型已经超过200个,在大模型纵横的时代,不仅大模型技术越来越卷,就连大模型相关的岗位和面试也开始越来越卷了。为了让大家更容易上车大模型算法赛道,我总结了大模型常考的面试题。(全套教程文末领取哈)

在这里插入图片描述
👉学会后的收获:👈
基于大模型全栈工程实现(前端、后端、产品经理、设计、数据分析等),通过这门课可获得不同能力;

能够利用大模型解决相关实际项目需求: 大数据时代,越来越多的企业和机构需要处理海量数据,利用大模型技术可以更好地处理这些数据,提高数据分析和决策的准确性。因此,掌握大模型应用开发技能,可以让程序员更好地应对实际项目需求;

基于大模型和企业数据AI应用开发,实现大模型理论、掌握GPU算力、硬件、LangChain开发框架和项目实战技能, 学会Fine-tuning垂直训练大模型(数据准备、数据蒸馏、大模型部署)一站式掌握;

能够完成时下热门大模型垂直领域模型训练能力,提高程序员的编码能力: 大模型应用开发需要掌握机器学习算法、深度学习

这份完整版的 AI 大模型学习资料已经上传CSDN,朋友们如果需要可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费

😝有需要的小伙伴,可以Vx扫描下方二维码免费领取🆓

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/439992.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

降重秘籍:如何利用ChatGPT将重复率从45%降至10%以下?

AIPaperGPT&#xff0c;论文写作神器~ https://www.aipapergpt.com/ 重复率高达45%&#xff1f;很多人一查论文的重复率&#xff0c;瞬间想“完了&#xff0c;这次真的要重写了”。但其实不用这么绝望&#xff01;有了ChatGPT&#xff0c;降重真的没那么难。今天就教你几招&a…

网络安全概述:从认知到实践

一、定义 网络安全&#xff0c;即致力于保护网络系统所涵盖的硬件、软件以及各类数据&#xff0c;切实保障其免遭破坏、泄露或者篡改等不良情形的发生。 二、重要性 个人层面&#xff1a;着重于守护个人隐私以及财产安全&#xff0c;为个人在网络世界中的各项活动提供坚实的保…

日语发音

中文 阴平&#xff08;第一声&#xff09;&#xff0c;用“ˉ”表示&#xff0c;如lā&#xff1b;阳平&#xff08;第二声&#xff09;&#xff0c;用“ˊ”表示&#xff0c;如l&#xff1b;上声&#xff08;第三声&#xff09;&#xff0c;用“ˇ”表示&#xff0c;如lǎ&am…

pWnos1.0 靶机渗透 (Perl CGI 的反弹 shell 利用)

靶机介绍 来自 vulnhub 主机发现 ┌──(kali㉿kali)-[~/testPwnos1.0] …

个人网站,怎么操作才能提升个人网站的流量

运营个人网站以提升流量是一个综合性的过程&#xff0c;涉及内容优化、技术调整、用户体验提升以及外部推广等多个方面。以下是一些专业建议&#xff0c;旨在帮助个人网站运营者有效提升网站流量&#xff1a; 1.精准关键词研究与优化 -关键词研究&#xff1a;利用工具如谷歌…

MATLAB图像去雾系统

应用背景 现在工业发展迅速&#xff0c;产生的废气很严重&#xff0c;导致雾霾厉害&#xff0c;现在虽然有硬件来拍摄&#xff0c;可以清晰化视野&#xff0c;但是硬件成本昂贵&#xff0c;急需寻求一种算法来帮助雾霾的清晰处理。显得经济。 采用算法原理 本文采用全局直方…

基金好书入门阅读笔记《基金作战笔记:从投基新手到配置高手的进阶之路》2

买基金&#xff0c;说到底是买基金所持有的一揽子资产。那么&#xff0c;常见的可投资产都有哪些类型呢&#xff1f; 图2.9进行了系统性的梳理&#xff0c;我们把资产分为四大类&#xff0c;分别是权益类、固收类、现金和另 类&#xff0c;下面就一一解读。 年化收益率是把一段…

Flume实战--Flume中的拦截器详解与操作

在处理大规模数据流时&#xff0c;Apache Flume 是一款功能强大的数据聚合工具&#xff0c;它可以通过拦截器在运行时对Event进行修改或丢弃。本文将详细讲解Flume中的拦截器&#xff0c;包括时间戳拦截器、Host添加拦截器、静态拦截器以及如何自定义拦截器。 Flume入门到实践…

Centos怎么执行脚本

方法一&#xff1a;切换到shell脚本所在的目录&#xff08;此时&#xff0c;称为工作目录&#xff09;执行shell脚本 cd /data/shell ./hello.sh 方法二&#xff1a;以绝对路径的方式去执行bash shell脚本 /data/shell/hello.sh 方法三&#xff1a;直接使用bash 或sh 来执行…

VGG原理与实战

VGG网络结构 这也更好的块状结构,256个卷积核 卷积就是我们的一个特征图啊往往都会缩小 &#xff0c;然后的话但它通道不会变.卷积一般是使用我们的通道C变大,磁化但是它的通道就是我们那个H和W一般都会变小.下采样的意思就是使分辨率变小 vgg—block内的卷积层都是同结构的意…

vite学习教程04、vue集成axios封装request工具类及应用

文章目录 前言1、安装axios2、封装request工具类3、封装api请求工具4、实战&#xff1a;vue中使用api请求工具类资料获取 前言 博主介绍&#xff1a;✌目前全网粉丝3W&#xff0c;csdn博客专家、Java领域优质创作者&#xff0c;博客之星、阿里云平台优质作者、专注于Java后端技…

k8s 中存储之 hostPath 卷

目录 1 hostPath 卷介绍 2 hostPath 卷实际应用操作 2.1 创建 pod 资源类型 2.2 修改清单文件增加 hostPath 对应的参数配置 2.3 查看是否创建 卷 和 pod 2.4 创建发布文件测试是否正常访问 1 hostPath 卷介绍 EmptyDir中数据不会被持久化&#xff0c;它会随着Pod的结束而销…

【数据结构】【链表代码】随机链表的复制

/*** Definition for a Node.* struct Node {* int val;* struct Node *next;* struct Node *random;* };*/typedef struct Node Node; struct Node* copyRandomList(struct Node* head) {if(headNULL)return NULL;//1.拷贝结点&#xff0c;连接到原结点的后面Node…

【工欲善其事】巧用 Sublime Text 生成带格式的 HTML 片段

文章目录 【工欲善其事】巧用 Sublime Text 生成带格式的 HTML 片段1 问题由来2 操作流程步骤1&#xff1a;打开代码片段定制页步骤2&#xff1a;在新标签页输入定制 XML步骤3&#xff1a;保存定义内容步骤4&#xff1a;功能测试 3 拓展 【工欲善其事】巧用 Sublime Text 生成带…

【Python】wxPython 高 DPI 缩放问题(笔记本上字体模糊问题)

问题 使用 wxPython 编写的程序在某些高 DPI 的电脑&#xff08;通常是笔记本&#xff09;上显示出来的字体会非常模糊&#xff1a; 事实上 wxPython 是支持高 DPI 的&#xff0c;但是由于我们的程序没有显式指明支持高 DPI&#xff0c;因此系统默认不支持高 DPI&#xff0c;…

【C++驾轻就熟】vector深入了解及模拟实现

​ 目录 ​编辑​ 一、vector介绍 二、标准库中的vector 2.1vector常见的构造函数 2.1.1无参构造函数 2.1.2 有参构造函数&#xff08;构造并初始化n个val&#xff09; 2.1.3有参构造函数&#xff08;使用迭代器进行初始化构造&#xff09; 2.2 vector iterator 的使…

【GC日志和OOM日志分析】JVM GC日志和OOM Dump文件分析

1 缘起 充电、充电、充电。 增加一些必备的知识&#xff0c;帮助后续使用。 2 配置JVM参数 为分析GC日志以及OOM相关信息&#xff0c;配置JVM参数&#xff0c;分为三个部分&#xff1a; &#xff08;1&#xff09;堆内存&#xff0c;包括年轻代、最大堆内存&#xff1b; &a…

VUE 开发——Node.js学习(一)

一、认识Node.js Node.js是一个跨平台JavaScript运行环境&#xff0c;使开发者可以搭建服务器端的JavaScript应用程序 使用Node.js编写服务器端程序——编写数据接口、前端工程化&#xff1b; Node.js环境没有BOM和DOM&#xff1b; Node.js安装&#xff1a;下载node-v16.19…

深度学习----------------------注意力机制

目录 心理学不随意线索随意线索 注意力机制非参注意力池化层Nadaraya-Watson核回归参数化的注意力机制 总结注意力汇聚&#xff1a;Nadaraya-Watson核回归代码生成数据集核回归非参数注意力汇聚注意力权重该部分总代码 带参数的注意力汇聚将训练数据集转换为键和值训练带参数的…

[Linux] 进程创建、退出和等待

标题&#xff1a;[Linux] 进程创建、退出和等待 个人主页水墨不写bug &#xff08;图片来源于AI&#xff09; 目录 一、进程创建fork&#xff08;&#xff09; 1&#xff09; fork的返回值&#xff1a; 2&#xff09;写时拷贝 ​编辑3&#xff09;fork常规用法 4&#xff…