iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > Python >Python如何利用PaddleOCR制作个搜题小工具
  • 318
分享到

Python如何利用PaddleOCR制作个搜题小工具

2023-07-02 05:07:42 318人浏览 薄情痞子

Python 官方文档:入门教程 => 点击学习

摘要

这篇文章主要介绍“python如何利用PaddleOCR制作个搜题小工具”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“Python如何利用PaddleOCR制作个搜题小工具”文章能帮助大家解决问题。

这篇文章主要介绍“python如何利用PaddleOCR制作个搜题小工具”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“Python如何利用PaddleOCR制作个搜题小工具”文章能帮助大家解决问题。

    安装

    虽然PaddleOCR支持服务端部署并提供识别api,但根据我们的需求,搭建一个本地离线的OCR识别环境,所以此次我们只介绍如何在本地安装并使用的做法。

    安装PaddlePaddle飞桨框架

    一、环境准备

    1 目前飞桨支持的环境

    windows 7/8/10 专业版/企业版 (64bit)

    GPU版本支持CUDA 10.1/10.2/11.0/11.2,且仅支持单卡

    Python 版本 3.6+/3.7+/3.8+/3.9+ (64 bit)

    pip 版本 20.2.2或更高版本 (64 bit)

    二、安装命令

    pip install paddlepaddle -i https://mirror.baidu.com/pypi/simple

    (注意此版本为CPU版本,如需GPU版本请查看PaddlePaddle文档)

    安装完成后您可以使用 python 进入python解释器,输入import paddle ,再输入 paddle.utils.run_check()

    如果出现PaddlePaddle is installed successfully!,说明您已成功安装。

    安装PaddleOCR

    pip install "paddleocr>=2.0.1" # 推荐使用2.0.1+版本

    代码使用

    安装完成后你可以使用以下代码来进行简单的功能测试

    from paddleocr import PaddleOCR, draw_ocr# Paddleocr目前支持中英文、英文、法语、德语、韩语、日语,可以通过修改lang参数进行切换# 参数依次为`ch`, `en`, `french`, `german`, `korean`, `japan`。ocr = PaddleOCR(use_angle_cls=True, lang="ch")  # need to run only once to download and load model into memory# 选择你要识别的图片路径img_path = '11.jpg'result = ocr.ocr(img_path, cls=True)for line in result:    print(line)# 显示结果from PIL import Imageimage = Image.open(img_path).convert('RGB')boxes = [line[0] for line in result]txts = [line[1][0] for line in result]scores = [line[1][1] for line in result]im_show = draw_ocr(image, boxes, txts, scores, font_path='/path/to/PaddleOCR/doc/fonts/simfang.ttf')im_show = Image.fromarray(im_show)im_show.save('result.jpg')

    结果是一个list,每个item包含了文本框,文字和识别置信度

    [[[24.0, 36.0], [304.0, 34.0], [304.0, 72.0], [24.0, 74.0]], ['纯臻营养护发素', 0.964739]]
    [[[24.0, 80.0], [172.0, 80.0], [172.0, 104.0], [24.0, 104.0]], ['产品信息/参数', 0.98069626]]
    [[[24.0, 109.0], [333.0, 109.0], [333.0, 136.0], [24.0, 136.0]], ['(45元/每公斤,100公斤起订)', 0.9676722]]
    ......

    可视化效果

    Python如何利用PaddleOCR制作个搜题小工具

    至此我们就掌握了 PaddleOCR 的基本使用,基于这个我们就能开发出一个OCR的搜题小工具了。

    搜题小工具

    现在有很多那种答题竞赛的小游戏,在限定时间内看谁答题正确率更高。或者现在一些单位会搞一些大练兵什么的竞赛,需要在网上答题,这个时候手动输入题目去搜索就很慢,效率也不会太高,所以我们就可以来写一个脚本,帮助我们完成搜题的过程。

    基本思路就是通过ADB截取当前屏幕,然后剪切出题目所在位置,然后通过PaddleOCR来获取题目文字,之后打开搜索引擎搜索或者打开题库搜索。

    安装ADB

    你可以到这里下载安装ADB之后配置环境变量。

    配置完环境变量后在终端输入adb,如果出现以下字符则证明adb安装完成。

    Android Debug Bridge version 1.0.41Version 31.0.3-7562133

    截图并保存题目区域图片

    import osfrom PIL import Image# 截图def pull_screenshot():    os.system('adb shell screencap -p /sdcard/screenshot.png')    os.system('adb pull /sdcard/screenshot.png .')img = Image.open("./screenshot.png")# 切割问题区域# (起始点的横坐标,起始点的纵坐标,宽度,高度)question  = img.crop((10, 400, 1060, 1000))# 保存问题区域question.save("./question.png")

    OCR识别,获取题目

    ocr = PaddleOCR(use_angle_cls=False,                         lang="ch",                         show_log=False                        )  # need to run only once to download and load model into memoryimg_path = 'question.png'result = ocr.ocr(img_path, cls=False)# 获取题目文本questionList = [line[1][0] for line in result]text = ""# 将数组转换为字符串for str in questionList :    text += strprint(text)

    打开浏览器搜索

    import WEBbrowserwebbrowser.open('Https://baidu.com/s?wd=' + urllib.parse.quote(question))

    之后你就可以查看搜索结果了

    如果有题库,你还可以使用pyautogui来模拟鼠标键盘操作,去操作Word等软件在题库中进行搜索。

    完整代码

    # -*- coding: utf-8 -*-# @Author  : Pu Zhiwei# @Time    : 2021-09-02 20:29from PIL import Imageimport osimport matplotlib.pyplot as pltfrom paddleocr import PaddleOCR, draw_ocrimport pyperclipimport pyautoguiimport timeimport webbrowserimport urllib.parse# 鼠标位置currentMouseX, currentMouseY = 60, 282# 截图获取当前题目def pull_screenshot():    os.system('adb shell screencap -p /sdcard/screenshot.png')    os.system('adb pull /sdcard/screenshot.png .')# 移动鼠标到搜索框搜索def MoveMouseToSearch():    # duration 参数,移动时间,即用时0.1秒移动到对应位置    pyautogui.moveTo(currentMouseX, currentMouseY, duration=0.1)    # 左键点击    pyautogui.click()    pyautogui.click()    # 模拟组合键,粘贴    pyautogui.hoTKEy('ctrl', 'v')# 扩充问题def AddText(list, length, text):    if length > 3:        return text + list[3]    else:        return text# 打开浏览器def open_webbrowser(question):    webbrowser.open('https://baidu.com/s?wd=' + urllib.parse.quote(question))# 显示所识别的题目def ShowAllQuestionText(list):    text = ""    for str in list:        text += str    print(text)if __name__ == "__main__":    while True:        print("\n\n请将鼠标放在Word的搜索框上,三秒后脚本将自动获取Word搜索框位置!\n\n")        # 延时三秒输出鼠标位置        time.sleep(3)        # 获取当前鼠标位置        currentMouseX, currentMouseY = pyautogui.position()        print('当前鼠标位置为: {0} , {1}'.fORMat(currentMouseX, currentMouseY))        start = input("按y键程序开始运行,按其他键重新获取搜索框位置:")        if start == 'y':            break    while True:        t = time.perf_counter()        pull_screenshot()        img = Image.open("./screenshot.png")        # 切割问题区域        # (起始点的横坐标,起始点的纵坐标,宽度,高度)        question  = img.crop((10, 400, 1060, 1000))        # 保存问题区域        question.save("./question.png")        # 加载 PaddleOCR        # Paddleocr目前支持中英文、英文、法语、德语、韩语、日语,可以通过修改lang参数进行切换        # 参数依次为`ch`, `en`, `french`, `german`, `korean`, `japan`。        # 自定义模型地址        # det_model_dir='./inference/ch_ppocr_server_v2.0_det_train',         #                rec_model_dir='./inference/ch_ppocr_server_v2.0_rec_pre',        #                cls_model_dir='./inference/ch_ppocr_mobile_v2.0_cls_train',        ocr = PaddleOCR(use_angle_cls=False,                         lang="ch",                         show_log=False                        )  # need to run only once to download and load model into memory        img_path = 'question.png'        result = ocr.ocr(img_path, cls=False)        questionList = [line[1][0] for line in result]        length = len(questionList)        text = ""        if length < 1:            text = questionList[0]        elif length == 2:            text = questionList[1]        else:            text = questionList[1] + questionList[2]        print('\n\n')        ShowAllQuestionText(questionList)        # 将结果写入剪切板        pyperclip.copy(text)        # 点击搜索        MoveMouseToSearch()                # 计算时间        print('\n\n')        end_time3 = time.perf_counter()        print('用时: {0}'.format(end_time3 - t))                Go = input('输入回车继续运行,输入 e 打开浏览器搜索,输入 a 增加题目长度,输入 n 结束程序运行: ')        if go == 'n':            break          if go == 'a':            text = AddText(questionList, length, text)            pyperclip.copy(text)            # 点击搜索            MoveMouseToSearch()            stop = input("输入回车继续")        elif go == 'e':            # 打开浏览器            open_webbrowser(text)            stop = input("输入回车继续")        print('\n------------------------\n\n')

    关于“Python如何利用PaddleOCR制作个搜题小工具”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识,可以关注编程网Python频道,小编每天都会为大家更新不同的知识点。

    --结束END--

    本文标题: Python如何利用PaddleOCR制作个搜题小工具

    本文链接: https://www.lsjlt.com/news/340013.html(转载时请注明来源链接)

    有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

    本篇文章演示代码以及资料文档资料下载

    下载Word文档到电脑,方便收藏和打印~

    下载Word文档
    猜你喜欢
    • Python如何利用PaddleOCR制作个搜题小工具
      这篇文章主要介绍“Python如何利用PaddleOCR制作个搜题小工具”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“Python如何利用PaddleOCR制作个搜题小工具”文章能帮助大家解决问题。...
      99+
      2023-07-02
    • Python利用PaddleOCR制作个搜题小工具
      目录介绍安装安装PaddlePaddle飞桨框架安装PaddleOCR代码使用搜题小工具安装ADB截图并保存题目区域图片OCR识别,获取题目打开浏览器搜索完整代码介绍 PaddleO...
      99+
      2024-04-02
    • 利用Python实现自制文件搜索小工具
      目录前言环境准备完整代码前言 嗨嗨,大家晚上好 ~ 当自己电脑文件很多还有点乱,不记得自己文件放哪里的时候,用电脑自带的搜索文件,这个等待时间可慢了 对我们这种敲代码的,这能忍吗,...
      99+
      2024-04-02
    • Rust利用tauri制作个效率小工具
      目录先看效果要解决的问题唤起方式菜单出现的位置最后日常使用电脑中经常会用到一个quicke工具中的轮盘菜单工具。 但quicke免费版很多功能不支持,且它的触发逻辑用的不舒服,经常误...
      99+
      2023-02-02
      Rust tauri制作效率小工具 Rust 效率小工具 Rust tauri
    • 如何使用Python制作一个多进制转换工具
      小编给大家分享一下如何使用Python制作一个多进制转换工具,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!前言学习资料下载链接 提取码:tha8&nbs...
      99+
      2023-06-29
    • python如何制作的天气预报小工具
      这篇文章主要介绍python如何制作的天气预报小工具,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!一.准备工作不需要准备。二.预览1.启动启动以后自动定位所在城市,展示定位城市的天气。2.添加城市3.展示多个城市天气...
      99+
      2023-06-15
    • 怎么用Python制作一个文件去重小工具
      这篇文章主要讲解了“怎么用Python制作一个文件去重小工具”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“怎么用Python制作一个文件去重小工具”吧!前言常常在下载网络素材时有很多的重复文...
      99+
      2023-06-29
    • 基于Python制作一个简单的文章搜索工具
      目录 前言功能实现导入模块创建窗口背景图片搜索文本框 内容显示界面搜索内容效果代码展示内容效果代码点击搜索功能代码访问博客网页 前言 今天,我无聊的时候...
      99+
      2023-05-12
      Python实现文章搜索工具 Python文章搜索工具 Python文章搜索 Python 搜索工具
    • 基于Python制作一个文件去重小工具
      目录前言实现步骤补充前言 常常在下载网络素材时有很多的重复文件乱七八糟的,于是想实现一个去重的操作。 主要实现思路就是遍历出某个文件夹包括其子文件夹下面的所有文件,最后,将所有文件...
      99+
      2024-04-02
    • 怎么用Python制作一个数据预处理小工具
      这篇文章主要讲解了“怎么用Python制作一个数据预处理小工具”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“怎么用Python制作一个数据预处理小工具”吧!在我们平常使用Python进行数据...
      99+
      2023-06-15
    • 怎么在python中利用tkinter制作一个倒计时工具
      怎么在python中利用tkinter制作一个倒计时工具?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。python的五大特点是什么python的五大特点:1.简...
      99+
      2023-06-14
    • 利用Python做一个电脑通知小工具
      目录序言效果展示代码实战序言 Windows不是有个消息通知功能,挺喜欢这个功能的,但是不太方便使用,也懒得去研究,于是准备用Python自己写一个,通过设定通知的间隔时间来实现类似...
      99+
      2022-12-29
      Python电脑通知工具 Python电脑通知 Python 通知工具
    • Python利用wxPython制作股票价格查询工具
      目录效果如下所示简介源代码源代码说明效果如下所示 简介 在当今信息时代,金融市场是一个引人注目的话题。作为普通人,我们也可以通过使用 Python 和 wxPython 库编写一个...
      99+
      2023-05-19
      Python wxPython实现股票价格查询工具 Python wxPython股票价格查询 Python wxPython 查询工具
    • 如何利用Python制作微信小客服
      这篇文章给大家分享的是有关如何利用Python制作微信小客服的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。整体思路:利用自动化测试库达到预期效果。运行环境:PyCharm Python码字流程获取微信的PID连接...
      99+
      2023-06-16
    • 使用python制作一个批量查询搜索排名的SEO免费工具
      💂 个人网站:【海拥】【摸鱼游戏】【神级源码资源网】🤟 前端学习课程:👉【28个案例趣学前端】【400个JS面试题】💅 寻找学习交流...
      99+
      2023-08-31
      python 开发语言
    • 利用Python编写简易的录制屏幕小工具
      目录1、准备2、代码由于最近测试需要录制系统界面的操作过程,因为都是全屏的操作,所以用python做一个简单的录屏小工具。 实现过程也是比较简单,就是通过对屏幕操作进行不断的截图,最...
      99+
      2024-04-02
    • 如何利用JavaScript差集实现一个对比小工具
      本篇内容介绍了“如何利用JavaScript差集实现一个对比小工具”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!前言在工作中需要每周统计人员...
      99+
      2023-06-20
    • 如何使用Python3制作一个带GUI界面的小说爬虫工具
      这篇文章主要介绍如何使用Python3制作一个带GUI界面的小说爬虫工具,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!效果图最近帮朋友写个简单爬虫,顺便整理了下,搞成了一个带GUI界面的小说爬虫工具,用来从笔趣阁爬取...
      99+
      2023-06-29
    • 如何利用Python实现一个论文降重工具
      前言 时值毕业季,有不少小伙伴深受论文查重的困扰。因此我便想到做一个简单的自动去重的工具,先看看效果,我们再对原理或是代码实现做进一步的分析。 首先需要输入appid以及key,这些...
      99+
      2024-04-02
    • 基于Python+OpenCV如何制作屏幕录制工具
      这篇文章跟大家分析一下“基于Python+OpenCV如何制作屏幕录制工具”。内容详细易懂,对“基于Python+OpenCV如何制作屏幕录制工具”感兴趣的朋友可以跟着小编的思路慢慢深入来阅读一下,希望阅读后能够对大家有所帮助。下面跟着小编...
      99+
      2023-06-26
    软考高级职称资格查询
    编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
    • 官方手机版

    • 微信公众号

    • 商务合作