新闻中心

使用paddleOCR完成价格提取并实现可视化

2025-08-01
浏览次数:
返回列表
该项目通过pyautogui控制鼠标点击金投网各省份页面并截图,利用paddleOCR提取废弃金属价格数据,经pymysql存入MySQL。再以Flask搭建后端,结合百度echart框架实现各省份价格实时动态可视化,解决了网站路径多变导致的爬虫获取数据难题。

☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 免费无限量使用 DeepSeek R1 模型☜☜☜

使用paddleocr完成价格提取并实现可视化 -

一、项目介绍

基于文字提取技术paddleOCR实现在金投网上获取各个省份的当日废弃金属价格。区别于爬虫获取网页数据,本项目使用脚本控制鼠标来获取网页截图,用paddleocr技术提取价格数据,在不使用爬虫的技术下也能精准的获取想要的价格数据。

使用paddleOCR完成价格提取并实现可视化 -

本项目还借用百度的echart框架,再加上flask技术,搭建了一个简单的网页,用于对各省份价格数据的实时动态可视化,下面是可视化网页的效果展示。

使用paddleOCR完成价格提取并实现可视化 -

二、详细说明

最近铁的价格波动较大,去网站上搜了一下各省份的价格,发现铁价呈现南高北低,相邻省份价格相近等情况,于是想把这网页上的数据爬取下来并加上一个中国地图实现各省份铁价可视化,研究了金投网后发现由于废弃金属产品较多,数据量过大,该网页采取一个省份设置一个路径的方式存储一个产品的数据,不利于在单个网页获取全部数据,且不同时间其路径也不一样,用爬虫来获取数据难度有点高,于是借鉴了之前写的项目,基于paddleOCR获取数字产品价格,作者编写了脚本控制鼠标点击并截图,后期通过文字提取的方式来获取网页数据。 接下来会分几步来简述项目实现过程。
2.1、脚本 通过pyautogui库控制鼠标点击,由于数据量过大,这里就简单展示前两个省份的代码。(受限于这是一个在线的notebook,无法进行鼠标键盘的交互。所以下面的代码仅供展示作用,不要运行!)

In [ ]

import time  # 加入time函数,可以控制点击时间,等网页完全打开后再截图 import pyautogui as pg  # 用于控制鼠标 from PIL import ImageGrab  # 截取网页 city = ["北京", "上海", "天津", "重庆", "广东", "浙江", "江苏", "江西",         "安徽", "河南", "河北", "山东", "福建", "湖南", "湖北",         "广西", "山西", "陕西", "宁夏", "甘肃", "新疆", "青海", "海南",         "贵州", "云南", "四川", "西藏", "内蒙古", "辽宁", "吉林", "黑龙江"] time.sleep(5)  # 进入界面后等待5秒 pg.click(360, 600)  # 选择第一个城市(北京),360,600为鼠标在屏幕上的坐标点。 pg.click(900, 485)  # 把鼠标移开 time.sleep(2) image = ImageGrab.grab(bbox=(230, 600, 520, 720))  # 截图 image.s*e(str(0) + ".png")  # 保存图片 print("已保存"+city[0]+"城市铁价") pg.click(600, 485)  # 回到省份界面 time.sleep(2) pg.click(480, 600)  # 选择第2个城市(上海) time.sleep(1) pg.click(900, 485)  # 把鼠标移开 time.sleep(2) image = ImageGrab.grab(bbox=(230, 600, 520, 720))  # 截图 image.s*e(str(1) + ".png")  # 保存图片 print("已保存"+city[1]+"城市铁价") pg.click(600, 485)  # 回到省份界面 time.sleep(2)
2.2、文字提取 先给大家简单介绍一下paddleOCR,PaddleOCR,一款文本识别效果不输于商用的Python库!支持多语言识别,目前能够支持 80 多种语言;除了能对中文、英语、数字识别之外,还能应对字体倾斜、文本中含有小数点字符等复杂情况;提供有丰富的 OCR ;域相关工具供我们使用,方便我们制作自己的数据集、用于训练
2.2.1、解压数据集(价格截图) 下图为截取的图片

使用paddleOCR完成价格提取并实现可视化 -

In [1]

!unzip -oq /home/aistudio/data/data163670/price_of_scrap_iron.zip -d price
2.2.2、下载paddleocr

In [2]

商易多用户商城 商易多用户商城

功能介绍:1. 商品出售包含拍卖模式,一口价模式。2. 全套系统采用淘宝网风格,成熟,简洁大方3. 每个商品支持多张图片上传,可自由设定,满足广大网民的迫切要求4. 商品信息支持 ubb,图文并茂5. 注册用户可参与竞拍,或者拍卖自己的商品6. 拥有会员注册,交易提醒,成交商品确认等邮件发送功能7. 拥有交易双方信用评价的功能,使得交易安全可*,可信度高8. 拥有安全稳定的用户虚拟币平台,可实现商

商易多用户商城 0 查看详情 商易多用户商城
!pip install paddleocr
2.2.3、使用paddleocr技术提取价格数据

In [5]

from paddleocr import PaddleOCR money1 = []  # 用于存储ocr提取出来的数据 money_all = []  # 存储全部价格 all_address = ["北京", "上海", "天津", "重庆", "广东", "浙江", "江苏", "江西",                "安徽", "河南", "河北", "山东", "福建", "湖南", "湖北",                "广西", "山西", "陕西", "宁夏", "甘肃", "新疆", "青海", "海南",                "贵州", "云南", "四川", "西藏", "内蒙古", "辽宁", "吉林", "黑龙江"] ocr = PaddleOCR(use_angle_cls=True, lang="ch") for i in range(30):  # 把脚本截图图片通过OCR识别提取价格     img_path = str("price/各省废弃金属-铁-价格/"+str(i) + ".png")  # 设定价格图片路径     result = ocr.ocr(img_path, cls=False, det=True, rec=True)  # ocr读取     for line in result:         #print(line[1][0])  # 输出读取内容         money1.append(line[1][0])  # 存储     money = money1[1+(3*i)]  # 有3个数据,把第二个价格数据提取出来     money_all.append(money)  # 把价格录到总价格中     print("省份:"+all_address[i]+"    价格"+money_all[i])
[2025/08/10 16:10:57] ppocr DEBUG: Namespace(alpha=1.0, benchmark=False, beta=1.0, cls_batch_num=6, cls_image_shape='3, 48, 192', cls_model_dir='/home/aistudio/.paddleocr/whl/cls/ch_ppocr_mobile_v2.0_cls_infer', cls_thresh=0.9, cpu_threads=10, crop_res_s*e_dir='./output', det=True, det_algorithm='DB', det_db_box_thresh=0.6, det_db_score_mode='fast', det_db_thresh=0.3, det_db_unclip_ratio=1.5, det_east_cover_thresh=0.1, det_east_nms_thresh=0.2, det_east_score_thresh=0.8, det_fce_box_type='poly', det_limit_side_len=960, det_limit_type='max', det_model_dir='/home/aistudio/.paddleocr/whl/det/ch/ch_PP-OCRv3_det_infer', det_pse_box_thresh=0.85, det_pse_box_type='quad', det_pse_min_area=16, det_pse_scale=1, det_pse_thresh=0, det_sast_nms_thresh=0.2, det_sast_polygon=False, det_sast_score_thresh=0.5, draw_img_s*e_dir='./inference_results', drop_score=0.5, e2e_algorithm='PGNet', e2e_char_dict_path='./ppocr/utils/ic15_dict.txt', e2e_limit_side_len=768, e2e_limit_type='max', e2e_model_dir=None, e2e_pgnet_mode='fast', e2e_pgnet_score_thresh=0.5, e2e_pgnet_valid_set='totaltext', enable_mkldnn=False, fourier_degree=5, gpu_mem=500, help='==SUPPRESS==', image_dir=None, ir_optim=True, label_list=['0', '180'],, layout=True, layout_label_map=None, layout_path_model='lp://PubLayNet/ppyolov2_r50vd_dcn_365e_publaynet/config', max_batch_size=10, max_text_length=25, min_subgraph_size=15, mode='structure', ocr=True, ocr_version='PP-OCRv3', output='./output', precision='fp32', process_id=0, rec=True, rec_algorithm='SVTR_LCNet', rec_batch_num=6, rec_char_dict_path='/opt/conda/envs/python35-paddle120-env/lib/python3.7/site-packages/paddleocr/ppocr/utils/ppocr_keys_v1.txt', rec_image_shape='3, 48, 320', rec_model_dir='/home/aistudio/.paddleocr/whl/rec/ch/ch_PP-OCRv3_rec_infer', s*e_crop_res=False, s*e_log_path='./log_output/', scales=[8, 16, 32], show_log=True, structure_version='PP-STRUCTURE', table=True, table_char_dict_path=None, table_max_len=488, table_model_dir=None, total_process_num=1, type='ocr', use_angle_cls=True, use_dilation=False, use_gpu=False, use_mp=False, use_onnx=False, use_pdserving=False, use_space_char=True, use_tensorrt=False, vis_font_path='./doc/fonts/simfang.ttf', warmup=False) [2025/08/10 16:10:58] ppocr DEBUG: dt_boxes num : 3, elapse : 0.18548965454101562 [2025/08/10 16:11:00] ppocr DEBUG: rec_res num  : 3, elapse : 1.4084184169769287 省份:北京    价格1900.00 [2025/08/10 16:11:00] ppocr DEBUG: dt_boxes num : 3, elapse : 0.28911447525024414 [2025/08/10 16:11:01] ppocr DEBUG: rec_res num  : 3, elapse : 1.4035155773162842 省份:上海    价格2380.00 [2025/08/10 16:11:02] ppocr DEBUG: dt_boxes num : 3, elapse : 0.291318416595459 [2025/08/10 16:11:03] ppocr DEBUG: rec_res num  : 3, elapse : 1.3992137908935547 省份:天津    价格2000.00 [2025/08/10 16:11:03] ppocr DEBUG: dt_boxes num : 3, elapse : 0.20323419570922852 [2025/08/10 16:11:05] ppocr DEBUG: rec_res num  : 3, elapse : 1.3923869132995605 省份:重庆    价格1750.00 [2025/08/10 16:11:05] ppocr DEBUG: dt_boxes num : 3, elapse : 0.20437145233154297 [2025/08/10 16:11:06] ppocr DEBUG: rec_res num  : 3, elapse : 1.499875545501709 省份:广东    价格2240.00 [2025/08/10 16:11:07] ppocr DEBUG: dt_boxes num : 3, elapse : 0.28789258003234863 [2025/08/10 16:11:08] ppocr DEBUG: rec_res num  : 3, elapse : 1.6108949184417725 省份:浙江    价格2470.00 [2025/08/10 16:11:08] ppocr DEBUG: dt_boxes num : 3, elapse : 0.28465819358825684 [2025/08/10 16:11:10] ppocr DEBUG: rec_res num  : 3, elapse : 1.4023168087005615 省份:江苏    价格1770.00 [2025/08/10 16:11:10] ppocr DEBUG: dt_boxes num : 3, elapse : 0.2079639434814453 [2025/08/10 16:11:12] ppocr DEBUG: rec_res num  : 3, elapse : 1.418123483657837 省份:江西    价格2250.00 [2025/08/10 16:11:12] ppocr DEBUG: dt_boxes num : 3, elapse : 0.2044999599456787 [2025/08/10 16:11:13] ppocr DEBUG: rec_res num  : 3, elapse : 1.408416986465454 省份:安徽    价格2360.00 [2025/08/10 16:11:13] ppocr DEBUG: dt_boxes num : 3, elapse : 0.2003467082977295 [2025/08/10 16:11:15] ppocr DEBUG: rec_res num  : 3, elapse : 1.4108216762542725 省份:河南    价格1905.00 [2025/08/10 16:11:15] ppocr DEBUG: dt_boxes num : 3, elapse : 0.30034303665161133 [2025/08/10 16:11:17] ppocr DEBUG: rec_res num  : 3, elapse : 1.5090062618255615 省份:河北    价格1830.00 [2025/08/10 16:11:17] ppocr DEBUG: dt_boxes num : 3, elapse : 0.2920353412628174 [2025/08/10 16:11:19] ppocr DEBUG: rec_res num  : 3, elapse : 1.4099595546722412 省份:山东    价格2230.00 [2025/08/10 16:11:19] ppocr DEBUG: dt_boxes num : 3, elapse : 0.20354890823364258 [2025/08/10 16:11:20] ppocr DEBUG: rec_res num  : 3, elapse : 1.4975931644439697 省份:福建    价格2070.00 [2025/08/10 16:11:21] ppocr DEBUG: dt_boxes num : 3, elapse : 0.20367145538330078 [2025/08/10 16:11:22] ppocr DEBUG: rec_res num  : 3, elapse : 1.399881362915039 省份:湖南    价格1800.00 [2025/08/10 16:11:22] ppocr DEBUG: dt_boxes num : 3, elapse : 0.28646397590637207 [2025/08/10 16:11:24] ppocr DEBUG: rec_res num  : 3, elapse : 1.4092700481414795 省份:湖北    价格2280.00 [2025/08/10 16:11:24] ppocr DEBUG: dt_boxes num : 3, elapse : 0.2845890522003174 [2025/08/10 16:11:25] ppocr DEBUG: rec_res num  : 3, elapse : 1.402533769607544 省份:广西    价格2280.00 [2025/08/10 16:11:26] ppocr DEBUG: dt_boxes num : 3, elapse : 0.20486736297607422 [2025/08/10 16:11:27] ppocr DEBUG: rec_res num  : 3, elapse : 1.3977165222167969 省份:山西    价格1915.00 [2025/08/10 16:11:27] ppocr DEBUG: dt_boxes num : 3, elapse : 0.2967183589935303 [2025/08/10 16:11:29] ppocr DEBUG: rec_res num  : 3, elapse : 1.7988090515136719 省份:陕西    价格1990.00 [2025/08/10 16:11:29] ppocr DEBUG: dt_boxes num : 3, elapse : 0.2913792133331299 [2025/08/10 16:11:31] ppocr DEBUG: rec_res num  : 3, elapse : 1.5969874858856201 省份:宁夏    价格1700.00 [2025/08/10 16:11:31] ppocr DEBUG: dt_boxes num : 3, elapse : 0.2055673599243164 [2025/08/10 16:11:33] ppocr DEBUG: rec_res num  : 3, elapse : 1.5008113384246826 省份:甘肃    价格1815.00 [2025/08/10 16:11:33] ppocr DEBUG: dt_boxes num : 3, elapse : 0.28537464141845703 [2025/08/10 16:11:34] ppocr DEBUG: rec_res num  : 3, elapse : 1.4073350429534912 省份:新疆    价格1845.00 [2025/08/10 16:11:35] ppocr DEBUG: dt_boxes num : 3, elapse : 0.2010488510131836 [2025/08/10 16:11:36] ppocr DEBUG: rec_res num  : 3, elapse : 1.484731674194336 省份:青海    价格1835.00 [2025/08/10 16:11:36] ppocr DEBUG: dt_boxes num : 3, elapse : 0.20502114295959473 [2025/08/10 16:11:38] ppocr DEBUG: rec_res num  : 3, elapse : 1.3996272087097168 省份:海南    价格1785.00 [2025/08/10 16:11:38] ppocr DEBUG: dt_boxes num : 3, elapse : 0.2883188724517822 [2025/08/10 16:11:39] ppocr DEBUG: rec_res num  : 3, elapse : 1.4016520977020264 省份:贵州    价格1915.00 [2025/08/10 16:11:40] ppocr DEBUG: dt_boxes num : 3, elapse : 0.2922041416168213 [2025/08/10 16:11:41] ppocr DEBUG: rec_res num  : 3, elapse : 1.502861738204956 省份:云南    价格1965.00 [2025/08/10 16:11:41] ppocr DEBUG: dt_boxes num : 3, elapse : 0.2015540599822998 [2025/08/10 16:11:43] ppocr DEBUG: rec_res num  : 3, elapse : 1.3932435512542725 省份:四川    价格2350.00 [2025/08/10 16:11:43] ppocr DEBUG: dt_boxes num : 3, elapse : 0.20165038108825684 [2025/08/10 16:11:44] ppocr DEBUG: rec_res num  : 3, elapse : 1.310579538345337 省份:西藏    价格1785.00 [2025/08/10 16:11:45] ppocr DEBUG: dt_boxes num : 3, elapse : 0.204742431640625 [2025/08/10 16:11:46] ppocr DEBUG: rec_res num  : 3, elapse : 1.399357557296753 省份:内蒙古    价格1765.00 [2025/08/10 16:11:46] ppocr DEBUG: dt_boxes num : 3, elapse : 0.19914031028747559 [2025/08/10 16:11:48] ppocr DEBUG: rec_res num  : 3, elapse : 1.3909227848052979 省份:辽宁    价格1915.00 [2025/08/10 16:11:48] ppocr DEBUG: dt_boxes num : 3, elapse : 0.20081448554992676 [2025/08/10 16:11:49] ppocr DEBUG: rec_res num  : 3, elapse : 1.394876480102539 省份:吉林    价格1735.00
2.3、使用pymysql把数据导入到mysql(受限于这是一个在线的notebook,无法调用本地摄像头或者无法进行鼠标键盘的交互。下面的代码仅供展示作用,不要运行!)

In [1]

    # 打开数据库连接     conn1 = pymysql.connect(host='localhost',                             user='root',                             password='123456',                             database='test_to_feitie')  # 表名     # 使用cursor()方法获取操作游标     cursor = conn1.cursor()     # SQL 更新语句     sql = "insert into test1 values(%s,%s,%s)"     cursor.execute(sql, [all_address[i], "2025-8-08", money_all[i]])  # 录入格式为:省份varchar,时间varchar,价格:int     conn1.commit()     cursor.close()     conn1.close()     print("成功把"+all_address[i]+"今日铁价写入test1中")
2.4.1、使用flask搭建后端。Flask是一个轻量级的可定制框架,使用Python语言编写,较其他同类型框架更为灵活、轻便、安全且容易上手。它可以很好地结合MVC模式进行开发,开发人员分工合作,小型团队在短时间内就可以完成功能丰富的中小型网站或Web服务的实现。另外,Flask还有很强的定制性,用户可以根据自己的需求来添加相应的功能,在保持核心功能简单的同时实现功能的丰富与扩展,其强大的插件库可以让用户实现个性化的网站定制,开发出功能强大的网站。下面是搭建后端的代码。(受限于这是一个在线的notebook,无法调用本地摄像头或者无法进行鼠标键盘的交互。下面的代码仅供展示作用,不要运行!)

In [ ]

from flask import Flask from flask import render_template from flask import jsonify import utils app = Flask(__name__) @app.route('/') def h_1():     return render_template("main.html") @app.route("/c2")  # 搭建c2路由用于获取mysql中的省份名字/价格信息 def get_c2_data():     res = []     for tup in utils.get_c2_data():         res.append({"name":tup[0],"value":int(tup[1])})     return jsonify({"data":res})  # 转化为json格式的数据 @app.route("/l1")  # 搭建l1路由用于获取MySQL中的佛山市所有价格数据 def get_l1_data():     data = utils.get_l1_data()     time,feitie,shengtie = [],[],[]     for a,b,c in data[:]:         time.append(a)         feitie.append(b)         shengtie.append(c)     return jsonify({"time":time,"feitie":feitie,"shengtie":shengtie}) if __name__ == '__main__':     app.run()
2.4.2、使用pymysql获取保存的数据(受限于这是一个在线的notebook,无法调用本地摄像头或者无法进行鼠标键盘的交互。下面的代码仅供展示作用,不要运行!)

In [ ]

import pymysql def get_conn():     # 打开数据库连接     conn = pymysql.connect(host='localhost',                            user='root',                            password='123456',                            database='test_to_feitie')     # 使用cursor()方法获取操作游标     cursor = conn.cursor()     return conn, cursor def close_conn(conn,cursor):     cursor.close()     conn.close() def query(sql,*args):     conn, cursor = get_conn()     cursor.execute(sql,args)     res = cursor.fetchall()     close_conn(conn, cursor)     return res def get_c2_data():     # sql = "select address,money from test1"     sql = "select address,money from test1 where(times=\"2025-8-08\")"     res = query(sql)     return res def get_l1_data():     sql = "select time,feitie,shengtie from foshan_test1"     res = query(sql)     return res if __name__ == "__main__":     print(get_l1_data())

以上就是使用paddleOCR完成价格提取并实现可视化的详细内容,更多请关注其它相关文章!


# python  # mysql  # 仅供  # 自己的  # 中文网  # 鼠标  # type  # fig  # udio  # cursor  # 区别  # 百度  # ai  # 工具  # 网站的优化就连火1星惠  # 建筑网站推广公司  # 头条小店推广营销方案  # 重庆快手营销推广企业招聘  # seo兼职去哪找seo博客  # 福州seo公司技术服务  # 苏州问答推广营销  # 企业开展网站建设意义  # 全网关键词搜索排名  # 小学生seo  # 宁夏  # 青海  # 多用户  # 北京  # 上海  # 这是一个 


相关栏目: 【 行业资讯67740 】 【 技术百科0 】 【 网络运营39195


相关推荐: 固态硬盘如何下载网页  夸克转存中是什么意思  单片机怎么发送can 信号  固态硬盘如何显示  网络光刻机是干什么用的  put linux命令如何书写  华硕k20ce怎么装win7  如何在固态硬盘上安装win7系统  如何利用运行命令查看声音启动  旧固态硬盘如何卖出  春运抢票最好抢什么票啊  得物上怎么样申请退换货 得物上退换货详细指南(包含海外)  typescript学多久可以学会  typescript多久能学会  如何用ftp连接命令行  苹果手机16有哪些功能  春运抢票准备什么  怎么用win7系统盘重装系统  ip dhcp是什么意思  春运抢票还用取票吗  如何卸载typescript  ai如何重复使用上一命令  单片机怎么加死循环  8英寸等于多少厘米  ao3镜像网站哪个好  oracle中datediff函数怎么用 Oracle中DATEDIFF函数详解  命令行如何启动应用程序  春运抢票最新技巧与方法  vivo手机爱奇艺怎么投屏到电视操作步骤  什么网址不能域名解析  春运预约抢票能抢到吗  db2命令中如何去到指定的副本  debian10和ubuntu20哪个好用  typescript中文怎么读  品道音响上的power键是什么意思  手机拍显示屏有条纹怎么去除  电脑显示器上power是什么意思  win10windows资源管理器在哪里打开  笔记本电脑多少钱  域名解析后为什么要进行域名备案  如何修改域名解析  苹果16改掉了哪些  bc是什么意思  苹果16有哪些黑科技  typescript怎么用  春运辅助抢票怎么抢  iphone拍电子屏有横条如何解决  闪光灯power闪烁是什么意思  win7旗舰版wifi怎么打开  开机如何进入命令行模式 

搜索