百度智能云

老子叫甜甜 提交于 2020-04-20 10:27:33

起源

今天想把春节时折腾OCR引擎-Tesseract时产出的脚本整理一下,以便发布到网络方便大家参考。看了一下,觉得没什么必要,因为我自己都很难看懂了。跟住看到一些应用百度文字识别免费接口的文章,心里痒痒,按耐不住自己搞了一个Python图形应用。

概要

我用到了Qt官方的PySide2来实现图形界面,使用下来感觉十分容易上手。官方的教程还是比较齐全的。

我还拼了一个SVG格式的应用图标,设计能力有待提高。我是先在freeicons.io搜索一些具象,再在Method Draw上将两块代码拼接起来,最后生成一个SVG。需要注意的是:

1. 把每块代码放在一个新的独立的<g>标签中。
2. 一次过拼接完代码,否则网站会自动添加一些内容。

百度免费的文字识别接口没有参数设置图片排版(横竖排版),所以我的族谱数字化行动还没有找到完美的OCR工具。我准备自己写个函数,把横版结果解析为竖版原文。

效果图

关键代码

设置窗体标题和图标:

self.setWindowTitle("Py-BaiduOCR")
self.setWindowIcon(QtGui.QIcon("./image2char.svg"))

调用文件浏览器选择图片,然后展示图片:

    """ 选择图片 """
    def selectImage(self):
        dialog = QtWidgets.QFileDialog(self)
        dialog.setFileMode(QtWidgets.QFileDialog.ExistingFile) #只允许选择一个已有的文件
        self.imageInfo = dialog.getOpenFileName()
        self.lineditImagePath.setText(self.imageInfo[0]) #imageInfo是列表,第一个元素为路径
        self.showImage()

    """ 展示图片 """
    def showImage(self):
        pixmap = QtGui.QPixmap(self.imageInfo[0])
        pixmap = pixmap.scaled(500, 500, QtCore.Qt.KeepAspectRatio) #QtCore.Qt包含了很多枚举,文档值得一看
        self.labelImage.setPixmap(pixmap)
        self.labelImage.setScaledContents(True)

调用百度接口识别图片:

    """ 读取文件内容 """
    def get_file_content(self):
        with open(self.lineditImagePath.text(), 'rb') as fp:
                return fp.read()

    """ 识别文字 """
    def ocr(self):
        image = self.get_file_content()
        """ 调用通用文字识别, 图片参数为本地图片 """
        ret = bac.client.basicGeneral(image)
        print(ret) #返回的是字典
        for each in ret['words_result']: #选择字典中的结果列表,遍历输出
            self.plaintexteditResult.appendPlainText(each['words'])

分享源码

源码在此,点赞/加星/收藏,助我一指之力。

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!