女友:啥,识别个文字还要付费?我立马用Python实现了一款免费版文字识别工具[通俗易懂]

女友:啥,识别个文字还要付费?我立马用Python实现了一款免费版文字识别工具[通俗易懂]导语有一天和女朋友聊天,翻着手机上的软件,看电影、看编程网站,她说到:“这么多APP,怎么就没一个做文字识别很方便的呢?我经常读书读到一段话想把它摘抄下来,可是这些软件不是打开进入文字识别步骤很复杂,就是限制识别次数,要么就是限制编辑,很多识别软件还都是付费的,好烦“。然后程序员小哥说:“要不我给你做一个免费版本文字识别小程序?”话不多话,对象第一,开干~~~​​​正文程序原理简介:python利用百度文字识别功能,实现对上传的图片进行扫描,获取图片的文字信…

大家好,又见面了,我是你们的朋友全栈君。

导语

      有一天和女朋友聊天,翻着手机上的软件,看电影、看编程网站, 她说到:“这么多 APP,怎么就没一个做文字识别很方便的呢?

女友:啥,识别个文字还要付费?我立马用Python实现了一款免费版文字识别工具[通俗易懂]

我经常读书读到一段话想把它摘抄下来,可是这些软件不是打开进入文字识别步骤很复杂,就是限制识别次数,要么就是限制编辑,很多识别软件还都是付费的,好烦“。

然后程序员小哥说:“要不我给你做一个免费版本文字识别小程序?” 话不多话,对象第一,开干~~~

女友:啥,识别个文字还要付费?我立马用Python实现了一款免费版文字识别工具[通俗易懂]女友:啥,识别个文字还要付费?我立马用Python实现了一款免费版文字识别工具[通俗易懂]​​

正文

程序原理简介:

python利用百度文字识别功能,实现对上传的图片进行扫描,获取图片的文字信息。

环境安装部分:PyQt5界面化程序。

版本:Python3,如下模块以及一些自带的模块。

# 引入第三方模块
import requests, base64
from PIL import Image

选择图片类型为.jpg,.png。

# 选择图片执行方法 def openfile(self): 

# 启动选择文件对话空,查找jpg以及png图片 

self.download_path = QFileDialog.getOpenFileName(self, "选择要识别的图片", os.getcwd(), "Image Files(*.jpg *.png)")

进行图片识别:

 图片识别(API) ''' 

 request_url = "https://aip.baidubce.com/rest/2.0/ocr/v1/webimage" 

 # 二进制方式打开图片文件 f = open(self.download_path[0], 'rb') img = base64.b64encode(f.read())params = {"image": img} 

 # access_token = '[调用鉴权接口获取的token]' request_url = request_url + "?access_token=" + baiduToken headers = {'content-type': 'application/x-www-form-urlencoded'} 

 response = requests.post(request_url, data=params, headers=headers) if response: # print(response.json()) return response.json()

效果图:

女友:啥,识别个文字还要付费?我立马用Python实现了一款免费版文字识别工具[通俗易懂]

附完整项目代码:

from PyQt5.QtWidgets import *
from PyQt5.QtGui import *

# 引入自定义模块
import dc
# 引入内置模块
import sys
import os
# 引入第三方模块
import requests, base64
from PIL import Image

class parentWindow(QWidget, dc.Ui_Form):
    # 初始化方法
    def __init__(self):
        # 找到父类 首页面
        super(parentWindow, self).__init__()
        # 初始化页面方法
        self.setupUi(self)
        # 点击选择图片
        self.selectImg.clicked.connect(self.openfile)
        # 点击查看图片
        self.viewImg.clicked.connect(self.viewbtn)

    # 选择图片执行方法
    def openfile(self):
        # 启动选择文件对话空,查找jpg以及png图片
        self.download_path = QFileDialog.getOpenFileName(self, "选择要识别的图片", os.getcwd(), "Image Files(*.jpg *.png)")
        # 判断是否选择图片
        if not self.download_path[0].strip():
            QMessageBox.information(self, '提示信息', '没有选择名片图片')
            pass
        else:
            # pixmap解析图片
            pixmap = QPixmap(self.download_path[0])
            # 设置图片
            self.imgLabel.setPixmap(pixmap)
            # 让图片自适应label大小
            self.imgLabel.setScaledContents(True)
            try:
                # 识别名片图片返回识别结果
                content = self.recgImg()
            except:
                QMessageBox.information(self, '提示信息', '识别错误请重新选择图片')

            # 识别图片的数据赋值
            words_result = content['words_result']
            # print(words_result)
            text = ''
            for item in words_result:
                for v in item.values():
                    text = text + '\n' + v
            self.discernText.setText(text)


    # 识别名片图片
    def recgImg(self):
        # 获取baiduToken
        apikey = '你的apikey'
        seckey = '你的seckey'
        tokenUrl = 'https://aip.baidubce.com/oauth/2.0/token?grant_type=client_credentials&client_id=' + apikey + '&client_secret=' + seckey
        res = requests.get(url=tokenUrl, headers={'content-type': 'application/json; charset=UTF-8'}).json()
        baiduToken = res['access_token']

        '''
        图片识别(API)
        '''
        request_url = "https://aip.baidubce.com/rest/2.0/ocr/v1/webimage"
        # 二进制方式打开图片文件
        f = open(self.download_path[0], 'rb')
        img = base64.b64encode(f.read())

        params = {"image": img}
        # access_token = '[调用鉴权接口获取的token]'
        request_url = request_url + "?access_token=" + baiduToken
        headers = {'content-type': 'application/x-www-form-urlencoded'}
        response = requests.post(request_url, data=params, headers=headers)
        if response:
            # print(response.json())
            return response.json()

    # 点击查看图片显示大图功能
    def viewbtn(self):
        if self.download_path:
            # 使用电脑中的看图工具打开图片
            img = Image.open(self.download_path[0])
            # 显示图片
            img.show()
        else:
            QMessageBox.information(self, '提示信息', '先选择名片图片')

if __name__ == '__main__':
    # 每一个PyQt5应用都必须创建一个应用对象
    app = QApplication(sys.argv)
    # 初始化页面
    window = parentWindow()
    # 显示首页
    window.show()
    sys.exit(app.exec_())

女友:啥,识别个文字还要付费?我立马用Python实现了一款免费版文字识别工具[通俗易懂]总结

好啦!文字识别系统就完成了,拿去!不谢~

记得三连就好~​??源码基地:关注小编获取哦~?记得三连吖

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/140547.html原文链接:https://javaforall.net

(0)
上一篇 2022年5月27日 下午7:40
下一篇 2022年5月27日 下午8:00


相关推荐

  • github 代理

    github 代理github 代理网址 https ghproxy com 终端命令行支持终端命令行 gitclone wget curl 等工具下载 支持 raw githubuserco com gist github com gist githubuserco com 文件下载 注意 不支持 SSHKey 方式 gitclone 下载 gitclonegitc ghproxy com https github com

    2026年3月19日
    1
  • 我也开始养小龙虾OpenClaw

    我也开始养小龙虾OpenClaw

    2026年3月15日
    1
  • vmware15最新激活码2021【注册码】

    vmware15最新激活码2021【注册码】,https://javaforall.net/100143.html。详细ieda激活码不妨到全栈程序员必看教程网一起来了解一下吧!

    2022年3月18日
    62
  • Feign 基本使用

    Feign 基本使用文章目录 Feign 概述什么是 FeignFeign 入门案例引入依赖 Feign 接口编写 Controller 结果 Feign 工作原理 FeignClient 注解 在开发 SpringCloud 微服务的时候 我们知道 服务之间都是以 HTTP 接口的形式对外提供服务的 因此消费者在进行调用的时候 底层就是通过 HTTPClient 的这种方式进行访问 当然我们可以使用 JDK 原生的 U

    2026年3月19日
    1
  • GPS 数据格式

    GPS 数据格式GPS数据格式GPRMC(建议使用最小GPS数据格式)$GPRMC,,,,,,,,,,,1)标准定位时间(UTCtime)格式:时时分分秒秒.秒秒秒(hhmmss.sss)。2)定位状态,A=数据可用,V=数据不可用。3)纬度,格式:度度分分.分分分分(ddmm.mmmm)。4)纬度区分,北半球(N)或南半球(S)。5)经度,格式:度度分分.分分分分

    2022年6月26日
    76
  • 第4课,python 条件语句if用法[通俗易懂]

    第4课,python 条件语句if用法[通俗易懂]pythonif语句的使用,关系运算和逻辑运算复习

    2022年7月5日
    21

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号