基于Python的OCR实现示例 您所在的位置:网站首页 img/indexpage/lenovoqrcode.jpg 基于Python的OCR实现示例

基于Python的OCR实现示例

2022-11-06 14:35| 来源: 网络整理| 查看: 265

基于Python的OCR实现示例 优客号 • 2022年11月2日 19:18:32 • 用户投稿

基于Python的OCR实现示例摘要:近几天在做一个东西,其中需要对图像中的文字进行识别,看了前辈们的文章,找到两个较简单的方法:使用python的pytesseract库和调用百度AI平台接口。写下这篇文章做一个比较简短的记录和学习,后期

摘要:

近几天在做一个东西,其中需要对图像中的文字进行识别,看了前辈们的文章,找到两个较简单的方法:使用python的pytesseract库和调用百度AI平台接口。写下这篇文章做一个比较简短的记录和学习,后期如果有新内容再行补充。

1、使用python的pytesseract库

主要是安装库,比较简单,直接使用 pip install 安装即可;另外,如果进行中文识别,需要下载语言包,并配置好相应环境,具体操作可以进行百度,教程有不少。因为这个识别方法比较简单(但效果并不是很理想),下面直接贴出测试代码:

import pytesseractfrom PIL import Imageimg = Image.open(’./testImages/test01.jpg’)pytesseract.pytesseract.tesseract_cmd = ’C:/Program Files (x86)/Tesseract-OCR/tesseract.exe’s = pytesseract.image_to_string(img, lang=’chi_sim’) #不加lang参数的话,默认进行英文识别print(s)

2、调用百度AI平台接口(有调用次数限制,通用50000次/天,学习完全够用)

这个类似于调用接口实现词法分析等操作,首先通过注册获得APP_ID、API_KEY、SECRET_KEY,然后调用接口实现OCR。由于是在线API,如果图片体积比较大,涉及到上传数据、分析数据、返回数据等一系列操作,需要一定的时间。此外,因为返回的是 dict 类型数据,所以需要对结果进行处理(这套算法是按行识别文字的,准确率较高,基本可以直接将结果进行提取和拼接)。实现起来比较简单,下面直接贴出代码:

from aip import AipOcrAPP_ID = ’00000000’API_KEY = ’00000000000000000000’SECRET_KEY = ’00000000000000000000’client = AipOcr(APP_ID, API_KEY, SECRET_KEY) def get_file_content(filePath): with open(filePath, ’rb’) as fp: return fp.read() def image2text(fileName): image = get_file_content(fileName) dic_result = client.basicGeneral(image) res = dic_result[’words_result’] result = ’’ for m in res: result = result + str(m[’words’]) return result getresult = image2text(’./test01.jpg’)print(getresult)

小结:

主要是初次接触OCR这个领域所做的一些笔记,后续再深入进行学习。

python实现的ocr接口

import pytesseractimport requestsfrom PIL import Imagefrom PIL import ImageFilterfrom StringIO import StringIOfrom werkzeug.utils import secure_filenamefrom gevent import monkeyfrom gevent.pywsgi import WSGIServermonkey.patch_all()from flask import Flask,render_template,jsonify,request,send_from_directoryimport timeimport osimport base64import randomapp = Flask(__name__)UPLOAD_FOLDER=’upload’app.config[’UPLOAD_FOLDER’] = UPLOAD_FOLDERbasedir = os.path.abspath(os.path.dirname(__file__))ALLOWED_EXTENSIONS = set([’png’,’jpg’,’JPG’,’PNG’])def allowed_file(filename): return ’.’ in filename and filename.rsplit(’.’,1)[1] in [email protected](’/’,methods=[’GET’],strict_slashes=False)def indexpage(): return render_template(’index.html’)@app.route(’/’,methods=[’POST’],strict_slashes=False)def api_upload(): log = open(“error.log”,”w+”) file_dir = os.path.join(basedir, app.config[’UPLOAD_FOLDER’]) if not os.path.exists(file_dir): os.makedirs(file_dir) print request.headers print >> log, request.headers f = request.files[’file’] postLang = request.form.get(“lang”, type=str) log.close() if f and allowed_file(f.filename): fname = secure_filename(f.filename) ext = fname.rsplit(’.’,1)[1] unix_time = int(time.time()) new_filename = str( random.randrange(0, 10001, 2))+str(unix_time)+’.’+ext f.save(os.path.join(file_dir,new_filename)) if cmp(postLang, “chi_sim”): strboxs = pytesseract.image_to_boxes(Image.open(“/var/OCRhtml/upload/” + new_filename), lang=”chi_sim”) strdata = pytesseract.image_to_string(Image.open(“/var/OCRhtml/upload/” + new_filename), lang=”chi_sim”) print “Chinese” else: strboxs = pytesseract.image_to_boxes(Image.open(“/var/OCRhtml/upload/”+new_filename)) strdata = pytesseract.image_to_string(Image.open(“/var/OCRhtml/upload/”+new_filename)) return jsonify({“errno”:0, “msg”:”succeed “,”data”:strdata,”info”:strboxs}) else: return jsonify({“errno”:1001, “errmsg”:u”failed”})if __name__ == ’__main__’: http_server = WSGIServer((’’, 80), app) http_server.serve_forever()

到此这篇关于基于Python的OCR实现示例的文章就介绍到这了,更多相关Python OCR 内容请搜索以前的文章或继续浏览下面的相关文章希望大家以后多多支持!

如何用python 自己写一个ocr

苹果调整iOS16界面UI适配机型(iOS16系统或将首发登场)

着重展示如何使用Python来实现Lisp方言Scheme的一个子集。我将我的解释器称之为Lispy (lis.py)。

如何利用Python对PDF文件做OCR识别

苹果调整iOS16界面UI适配机型(iOS16系统或将首发登场)

1.安装tesseract在不同的系统中安装tesseract非常容易。为了简便,我们以Ubuntu为例。

2.安装PyOCR现在我们还需要安装tesseract的Python接口。幸运的是,有许多出色的Python接口。我们采用最新的一个:3.安装Wand和PIL在我们开始之前,还需要另外安装两个依赖包。一个是Wand。

它是Imagemagick的Python接口。我们需要使用它来将PDF文件转换成图像:我们也需要PIL因为PyOCR需要使用它。你可以查看官方文档以确定如何将PIL安装到你的操作系统中。

4.热身让我们开始我们的脚本吧。首先,我们需要导入一些重要的库:注意:我将从PIL导入的Image模块改名为PI了,因为如果不这样做的话,它将和wand.image模块发生重名冲突。5.开始现在我们需要获得OCR库(在本例中,即tesseract)的句柄以及我们在PyOCR中将使用的语言:我们使用tool.get_available_languages()里的第二种语言,因为之前我曾尝试过,第二种语言就是英语。

接着,我们需要建立两个列表,用于存储我们的图像和最终的文本。下一步,我们需要采用wand将一个PDF文件转成jpeg文件。让我们试一试吧!注意:将PDF_FILE_NAME替换成当前路径下的一个可用的PDF文件名。

wand已经将PDF中所有的独立页面都转成了独立的二进制图像对象。我们可以遍历这个大对象,并把它们加入到req_image序列中去。

PYTHON如何调取OCR识别模块识别发票并输出到EXCLE?

苹果调整iOS16界面UI适配机型(iOS16系统或将首发登场)

imp

python2.7 ocr 文本识别 应该怎么弄

苹果调整iOS16界面UI适配机型(iOS16系统或将首发登场)

可以用捷速ocr文字识别软件,使用教程:第一步,我们需要下载捷速OCR文字识别软件,我们可以去官网或者在各大下载网站找到下载。运行软件,选择界面中的“从图片读文件”。

第二步,在出现的查找框里选择需要转换的图片,然后软件界面就会出现该图片的具体情况了。第三步,我们点击工具栏中的“识别”按钮,就能对图片进行识别了,识别的结果会呈现在图片右边。我们可以进行校对,然后修改错误。第四步,最后我们工具栏中的“Word”,就会直接输出一个Word文档供我们使用了。

或者你也可以直接复制识别结果,也可以达到一样的效果。

如何利用Python做简单的验证码识别

苹果调整iOS16界面UI适配机型(iOS16系统或将首发登场)

1   摘要 验证码是目前互联网上非常常见也是非常重要的一个事物,充当着很多系统的 防火墙 功能,但是随时OCR技术的发展,验证码暴露出来的安全问题也越来越严峻。本文介绍了一套字符验证码识别的完整流程,对于验证码安全和OCR识别技术都有一定的借鉴意义。

本文只做了该网站对外公开的公共图片资源进行了爬取, 并未越权 做任何多余操作。 本文在书写相关报告的时候已经 隐去 漏洞网站的身份信息。 本文作者 已经通知 网站相关人员此系统漏洞,并积极向新系统转移。 本报告的主要目的也仅是用于 OCR交流学习 和引起大家对 验证安全的警觉 。

4   引言 关于验证码的非技术部分的介绍,可以参考以前写的一篇科普类的文章: 互联网安全防火墙(1)–网络验证码的科普 里面对验证码的种类,使用场景,作用,主要的识别技术等等进行了讲解,然而并没有涉及到任何技术内容。本章内容则作为它的 技术补充 来给出相应的识别的解决方案,让读者对验证码的功能及安全性问题有更深刻的认识。 5   基本工具 要达到本文的目的,只需要简单的编程知识即可,因为现在的机器学习领域的蓬勃发展,已经有很多封装好的开源解决方案来进行机器学习。

普通程序员已经不需要了解复杂的数学原理,即可以实现对这些工具的应用了。 主要开发环境:

python3.5 python SDK版本

PIL 图片处理库

libsvm 开源的svm机器学习库 关于环境的安装,不是本文的重点,故略去。 6   基本流程 一般情况下,对于字符型验证码的识别流程如下: 准备原始图片素材 图片预处理 图片字符切割 图片尺寸归一化 图片字符标记 字符图片特征提取 生成特征和标记对应的训练数据集 训练特征标记数据生成识别模型 使用识别模型预测新的未知图片集 达到根据“图片”就能返回识别正确的字符集的目标 7   素材准备 7.1   素材选择 由于本文是以初级的学习研究目的为主,要求 “有代表性,但又不会太难” ,所以就直接在网上找个比较有代表性的简单的字符型验证码(感觉像在找漏洞一样)。

最后在一个比较旧的网站(估计是几十年前的网站框架)找到了这个验证码图片。 原始图:

放大清晰图:

此图片能满足要求,仔细观察其具有如下特点。 有利识别的特点 : 由纯阿拉伯数字组成 字数为4位 字符排列有规律 字体是用的统一字体 以上就是本文所说的此验证码简单的重要原因,后续代码实现中会用到 不利识别的特点 : 图片背景有干扰噪点 这虽然是不利特点,但是这个干扰门槛太低,只需要简单的方法就可以除去 7.2   素材获取 由于在做训练的时候,需要大量的素材,所以不可能用手工的方式一张张在浏览器中保存,故建议写个自动化下载的程序。

主要步骤如下: 通过浏览器的抓包功能获取随机图片验证码生成接口 批量请求接口以获取图片 将图片保存到本地磁盘目录中 这些都是一些IT基本技能,本文就不再详细展开了。 关于网络请求和文件保存的代码,如下:

def downloads_pic(**kwargs):    pic_name = kwargs.get(‘pic_name’, None)    url = ‘httand_code_captcha/’    res = requests.get(url, stream=True)    with open(pic_path + pic_name+’.bmp’, ‘wb’) as f:        for chunk in res.iter_content(chunk_size=1024):            if chunk:  # filter out keep-alive new chunks                f.write(chunk)                f.flush()        f.close()

循环执行N次,即可保存N张验证素材了。 下面是收集的几十张素材库保存到本地文件的效果图:

8   图片预处理 虽然目前的机器学习算法已经相当先进了,但是为了减少后面训练时的复杂度,同时增加识别率,很有必要对图片进行预处理,使其对机器识别更友好。 针对以上原始素材的处理步骤如下: 读取原始图片素材 将彩色图片二值化为黑白图片 去除背景噪点 8.1   二值化图片 主要步骤如下: 将RGB彩图转为灰度图 将灰度图按照设定阈值转化为二值图 image = Image.open(img_path) imgry = image.convert(‘L’)  # 转化为灰度图table = get_bin_table() out = imgry.point(table, ‘1’) 上面引用到的二值函数的定义如下: 1234567891011121314   def get_bin_table(threshold=140):    “””    获取灰度转二值的映射table    :param threshold:    :return:    “””    table = []    for i in range(256):        if i < threshold:            table.append(0)        else:            table.append(1)     return table   

由PIL转化后变成二值图片:0表示黑色,1表示白色。

二值化后带噪点的 6937 的像素点输出后如下图:

1111000111111000111111100001111100000011 1110111011110111011111011110111100110111 1001110011110111101011011010101101110111 1101111111110110101111110101111111101111 1101000111110111001111110011111111101111 1100111011111000001111111001011111011111 1101110001111111101011010110111111011111 1101111011111111101111011110111111011111 1101111011110111001111011110111111011100 1110000111111000011101100001110111011111

如果你是近视眼,然后离屏幕远一点,可以隐约看到 6937 的骨架了。 8.2   去除噪点 在转化为二值图片后,就需要清除噪点。本文选择的素材比较简单,大部分噪点也是最简单的那种 孤立点,所以可以通过检测这些孤立点就能移除大量的噪点。 关于如何去除更复杂的噪点甚至干扰线和色块,有比较成熟的算法: 洪水填充法 Flood Fill ,后面有兴趣的时间可以继续研究一下。

本文为了问题简单化,干脆就用一种简单的自己想的 简单办法 来解决掉这个问题: 对某个 黑点 周边的九宫格里面的黑色点计数 如果黑色点少于2个则证明此点为孤立点,然后得到所有的孤立点 对所有孤立点一次批量移除。 下面将详细介绍关于具体的算法原理。 将所有的像素点如下图分成三大类 顶点A 非顶点的边界点B 内部点C 种类点示意图如下:

其中: A类点计算周边相邻的3个点(如上图红框所示) B类点计算周边相邻的5个点(如上图红框所示) C类点计算周边相邻的8个点(如上图红框所示) 当然,由于基准点在计算区域的方向不同,A类点和B类点还会有细分: A类点继续细分为:左上,左下,右上,右下 B类点继续细分为:上,下,左,右 C类点不用细分 然后这些细分点将成为后续坐标获取的准则。 主要算法的python实现如下:

def sum_9_region(img, x, y):    “””    9邻域框,以当前点为中心的田字框,黑点个数    :param x:    :param y:    :return:    “””    # todo 判断图片的长宽度下限    cur_pixel = img.getpixel((x, y))  # 当前像素点的值    width = img.width    height = img.height    if cur_pixel == 1:  # 如果当前点为白色区域,则不统计邻域值        return 0    if y == 0:  # 第一行        if x == 0:  # 左上顶点,4邻域            # 中心点旁边3个点            sum = cur_pixel \                  + img.getpixel((x, y + 1)) \                  + img.getpixel((x + 1, y)) \                  + img.getpixel((x + 1, y + 1))            return 4 – sum        elif x == width – 1:  # 右上顶点            sum = cur_pixel \                  + img.getpixel((x, y + 1)) \                  + img.getpixel((x – 1, y)) \                  + img.getpixel((x – 1, y + 1))            return 4 – sum        else:  # 最上非顶点,6邻域            sum = img.getpixel((x – 1, y)) \                  + img.getpixel((x – 1, y + 1)) \                  + cur_pixel \                  + img.getpixel((x, y + 1)) \                  + img.getpixel((x + 1, y)) \                  + img.getpixel((x + 1, y + 1))            return 6 – sum    elif y == height – 1:  # 最下面一行        if x == 0:  # 左下顶点            # 中心点旁边3个点            sum = cur_pixel \                  + img.getpixel((x + 1, y)) \                  + img.getpixel((x + 1, y – 1)) \                  + img.getpixel((x, y – 1))            return 4 – sum        elif x == width – 1:  # 右下顶点            sum = cur_pixel \                  + img.getpixel((x, y – 1)) \                  + img.getpixel((x – 1, y)) \                  + img.getpixel((x – 1, y – 1))            return 4 – sum        else:  # 最下非顶点,6邻域            sum = cur_pixel \                  + img.getpixel((x – 1, y)) \                  + img.getpixel((x + 1, y)) \                  + img.getpixel((x, y – 1)) \                  + img.getpixel((x – 1, y – 1)) \                  + img.getpixel((x + 1, y – 1))            return 6 – sum    else:  # y不在边界        if x == 0:  # 左边非顶点            sum = img.getpixel((x, y – 1)) \                  + cur_pixel \                  + img.getpixel((x, y + 1)) \                  + img.getpixel((x + 1, y – 1)) \                  + img.getpixel((x + 1, y)) \                  + img.getpixel((x + 1, y + 1))            return 6 – sum        elif x == width – 1:  # 右边非顶点            # print(‘%s,%s’ % (x, y))            sum = img.getpixel((x, y – 1)) \                  + cur_pixel \                  + img.getpixel((x, y + 1)) \                  + img.getpixel((x – 1, y – 1)) \                  + img.getpixel((x – 1, y)) \                  + img.getpixel((x – 1, y + 1))            return 6 – sum        else:  # 具备9领域条件的            sum = img.getpixel((x – 1, y – 1)) \                  + img.getpixel((x – 1, y)) \                  + img.getpixel((x – 1, y + 1)) \                  + img.getpixel((x, y – 1)) \                  + cur_pixel \                  + img.getpixel((x, y + 1)) \                  + img.getpixel((x + 1, y – 1)) \                  + img.getpixel((x + 1, y)) \                  + img.getpixel((x + 1, y + 1))            return 9 – sum

Tips:这个地方是相当考验人的细心和耐心程度了,这个地方的工作量还是蛮大的,花了半个晚上的时间才完成的。

计算好每个像素点的周边像素黑点(注意:PIL转化的图片黑点的值为0)个数后,只需要筛选出个数为 1或者2 的点的坐标即为 孤立点 。这个判断方法可能不太准确,但是基本上能够满足本文的需求了。 经过预处理后的图片如下所示:

对比文章开头的原始图片,那些 孤立点 都被移除掉,相对比较 干净 的验证码图片已经生成。

9   图片字符切割 由于字符型 验证码图片 本质就可以看着是由一系列的 单个字符图片 拼接而成,为了简化研究对象,我们也可以将这些图片分解到 原子级 ,即: 只包含单个字符的图片。 于是,我们的研究对象由 “N种字串的组合对象” 变成 “10种阿拉伯数字” 的处理,极大的简化和减少了处理对象。 9.1   分割算法 现实生活中的字符验证码的产生千奇百怪,有各种扭曲和变形。

关于字符分割的算法,也没有很通用的方式。这个算法也是需要开发人员仔细研究所要识别的字符图片的特点来制定的。 当然,本文所选的研究对象尽量简化了这个步骤的难度,下文将慢慢进行介绍。 使用图像编辑软件(PhoneShop或者其它)打开验证码图片,放大到像素级别,观察其它一些参数特点:

可以得到如下参数: 整个图片尺寸是 40*10 单个字符尺寸是 6*10 左右字符和左右边缘相距2个像素 字符上下紧挨边缘(即相距0个像素) 这样就可以很容易就定位到每个字符在整个图片中占据的像素区域,然后就可以进行分割了,具体代码如下:

def get_crop_imgs(img):    “””    按照图片的特点,进行切割,这个要根据具体的验证码来进行工作. # 见原理图    :param img:    :return:    “””    child_img_list = []    for i in range(4):        x = 2 + i * (6 + 4)  # 见原理图        y = 0        child_img = img.crop((x, y, x + 6, y + 10))        child_img_list.append(child_img)    return child_img_list

然后就能得到被切割的 原子级 的图片元素了:

9.2   内容小结 基于本部分的内容的讨论,相信大家已经了解到了,如果验证码的干扰(扭曲,噪点,干扰色块,干扰线……)做得不够强的话,可以得到如下两个结论: 4位字符和40000位字符的验证码区别不大

纯字母

不区分大小写。

分类数为26 区分大小写。分类数为52 纯数字。分类数为10

数字和区分大小写的字母组合。

分类数为62 纯数字 和 数字及字母组合 的验证码区别不大

在没有形成 指数级或者几何级 的难度增加,而只是 线性有限级 增加计算量时,意义不太大。 10   尺寸归一 本文所选择的研究对象本身尺寸就是统一状态:6*10的规格,所以此部分不需要额外处理。但是一些进行了扭曲和缩放的验证码,则此部分也会是一个图像处理的难点。 11   模型训练步骤 在前面的环节,已经完成了对单个图片的处理和分割了。

后面就开始进行 识别模型 的训练了。 整个训练过程如下: 大量完成预处理并切割到原子级的图片素材准备 对素材图片进行人为分类,即:打标签 定义单张图片的识别特征 使用SVM训练模型对打了标签的特征文件进行训练,得到模型文件 12   素材准备 本文在训练阶段重新下载了同一模式的4数字的验证图片总计:3000张。然后对这3000张图片进行处理和切割,得到12000张原子级图片。

在这12000张图片中删除一些会影响训练和识别的强干扰的干扰素材,切割后的效果图如下:

13   素材标记 由于本文使用的这种识别方法中,机器在最开始是不具备任何 数字的观念的。所以需要人为的对素材进行标识,告诉 机器什么样的图片的内容是 1……。 这个过程叫做 “标记”。 具体打标签的方法是: 为0~9每个数字建立一个目录,目录名称为相应数字(相当。

如何用python 自己写一个ocr

苹果调整iOS16界面UI适配机型(iOS16系统或将首发登场)

推荐使用现有的ocr库,没必要自己造轮子。现有的有三个库都可以用来识别,也都是基于Tesseract的一个封装。

pytesseract:Google Tesseract OCR 的另一个封装(wrapper)。

python-tesseract – Google Tesseract OCR 的一个包装类。

如何利用Python对PDF文件做OCR识别

苹果调整iOS16界面UI适配机型(iOS16系统或将首发登场)

1.安装tesseract

在不同的系统中安装tesseract非常容易。为了简便,我们以Ubuntu为例。

2.安装PyOCR

现在我们还需要安装tesseract的Python接口。幸运的是,有许多出色的Python接口。我们采用最新的一个:

3.安装Wand和PIL

在我们开始之前,还需要另外安装两个依赖包。一个是Wand。

它是Imagemagick的Python接口。我们需要使用它来将PDF文件转换成图像:

我们也需要PIL因为PyOCR需要使用它。你可以查看官方文档以确定如何将PIL安装到你的操作系统中。

4.热身

让我们开始我们的脚本吧。首先,我们需要导入一些重要的库:

注意:我将从PIL导入的Image模块改名为PI了,因为如果不这样做的话,它将和wand.image模块发生重名冲突。

5.开始

现在我们需要获得OCR库(在本例中,即tesseract)的句柄以及我们在PyOCR中将使用的语言:

我们使用tool.get_available_languages()里的第二种语言,因为之前我曾尝试过,第二种语言就是英语。

接着,我们需要建立两个列表,用于存储我们的图像和最终的文本。

下一步,我们需要采用wand将一个PDF文件转成jpeg文件。让我们试一试吧!

注意:将PDF_FILE_NAME替换成当前路径下的一个可用的PDF文件名。

wand已经将PDF中所有的独立页面都转成了独立的二进制图像对象。我们可以遍历这个大对象,并把它们加入到req_image序列中去。

python2.7 ocr 文本识别 应该怎么弄

苹果调整iOS16界面UI适配机型(iOS16系统或将首发登场)

Python图片文本识别使用的工具是PIL和pytesser。因为他们使用到很多的python库文件,为了避免一个个工具的安装,建议使用pythonxy

pytesser是OCR开源项目的一个模块,在Python中导入这个模块即可将图片中的文字转换成文本。

当在Python中调用pytesser模块时,pytesser又用tesseract识别图片中的文字。pytesser的使用步骤如下:

首先,安装Python2.7版本,这个版本比较稳定,建议使用这个版本。

其次,安装pythoncv。

然后,安装PIL工具,pytesser的使用需要PIL库的支持。

接着下载pytesser

最后,将pytesser解压,这个是免安装的,可以将解压后的文件cut到Python安装目录的Lib\site-packages下直接使用,比如我的安装目录是:C:\Python27\Lib\site-packages,同时把这个目录添加到环境变量之中。

完成以上步骤之后,就可以编写图片文本识别的Python脚本了。参考脚本如下:

from pytesser import *

import ImageEnhance

image = Image.open(‘D:\\workspace\\python\\5.png’)

#使用ImageEnhance可以增强图片的识别率

enhancer = ImageEnhance.Contrast(image)

image_enhancer = enhancer.enhance(4)

print image_to_string(image_enhancer)

tesseract是谷歌的一个对图片进行识别的开源框架,免费使用,现在已经支持中文,而且识别率非常高,这里简要来个helloworld级别的认识

下载之后进行安装,不再演示。

用python 将fastq to fasta 实现 最好详细代码 有例子 谢谢

苹果调整iOS16界面UI适配机型(iOS16系统或将首发登场)

vc++的ocr识别,借助modi,首先想实现图片的显示,就是点击一下图片文件,就可以在右面的空间里显示图片

苹果调整iOS16界面UI适配机型(iOS16系统或将首发登场)

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

如若内容造成侵权/违法违规/事实不符,请联系优客号进行投诉反馈,一经查实,立即删除! 赞 (0) 优客号 优客号 认证作者 0 0 生成海报 扫码分享到微信 Python %r和%s区别代码实例解析 « 上一篇 2022年11月2日 19:18:09 基于python图像处理API的使用示例 下一篇 » 2022年11月2日 19:19:14 相关推荐 vs code自定义代码颜色的方法 用户投稿 vs code自定义代码颜色的方法 2022年11月4日 国际不打小孩日(家长:让我们休息一天吧) 用户投稿 国际不打小孩日(家长:让我们休息一天吧) 2022年4月30日 Java中的== 和equals()有什么方法实例 用户投稿 Java中的== 和equals()有什么方法实例 2022年11月4日 python 使用cx-freeze打包程序的实现 用户投稿 python 使用cx-freeze打包程序的实现 2022年11月2日 python 链接sqlserver 写接口实例 用户投稿 python 链接sqlserver 写接口实例 2022年11月2日 visual studio code运行代码的操作方法 用户投稿 visual studio code运行代码的操作方法 2022年11月4日 在python中修改.properties文件的操作 用户投稿 在python中修改.properties文件的操作 2022年11月2日 驱动力来自哪里-献给迷茫的程序员 用户投稿 驱动力来自哪里-献给迷茫的程序员 2022年11月5日 月薪3万的程序员都避开了哪些坑 用户投稿 月薪3万的程序员都避开了哪些坑 2022年11月6日 notepad++添加到鼠标右键菜单的方法 用户投稿 notepad++添加到鼠标右键菜单的方法 2022年11月4日 发表评论 取消回复请登录后评论...登录后才能评论


【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有