Python批量识别图片文字(数字识别模式)大幅度提高数字识别准确率

这篇具有很好参考价值的文章主要介绍了Python批量识别图片文字(数字识别模式)大幅度提高数字识别准确率。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

目录

 文章来源地址https://www.toymoban.com/news/detail-643478.html

一、使用beautiful soup库爬取网页图片

二、使用pytesseract库识别图片中数据,并将数据存入txt文件

三、用pandas库实现txt文件到csv文件的转换


 

一、使用beautiful soup库爬取网页图片

 该网站中有需要的数据,但是是以图片形式存在。

这样就给我们爬取数据造成了一些困扰,没有办法之间从网站上获取数据,只能先把这些图片爬取下来,之后再进行处理。

按F12,进入开发者模式,在html源码上找到图片所在的位置:

python图片数字提取,python,numpy,pandas,beautifulsoup

 

可以看出图片位于“article”类下的第7个p块下,并且观察对应的每张图片的src,可以看出每张图片仅最后的数字不同,所以我们可以进行网址的拼接,进而调用get方法下载这些图片

通过beautiful soup库中findall()方法进行定位图片,并下载和重命名所有图片

注意:p中存储的是所有html中p块信息,而我们需要的图片位于第7个p块下,所以p[6]中是我们需要的信息

python图片数字提取,python,numpy,pandas,beautifulsoup

 

将下载的图片保存在当前目录新创建的文件夹下

python图片数字提取,python,numpy,pandas,beautifulsoup

python图片数字提取,python,numpy,pandas,beautifulsoup

爬取过程的源代码如下:

import os
import re
import time
import requests
from bs4 import BeautifulSoup

# 手动写入目标套图的首页地址
download_url = "https://www.dxsbb.com/news/85155.html"

# 手动写入网站中图片的个数
num = 23

# 创建一个文件夹用来保存图片
file_name = "2020年四川高考理科一分一段表"

# 目标图片下载地址的前半部分(固定不变那部分,后半段是变化的,需要解析网页得到)
imgae_down_url_1 = "https://www.dxsbb.com"


# 创建文件夹
def CreateFolder(file):
    """创建存储数据文件夹"""
    flag = 1
    while flag == 1:  # 若文件已存在,则不继续往下走以免覆盖了原文件
        if not os.path.exists(file):
            os.mkdir(file)
            flag = 0
        else:
            print('该文件已存在,请重新输入')
            flag = 1
            time.sleep(1)
        # 返回文件夹的路径,这里直接放这工程的根目录下
        path = os.path.abspath(file) + "\\"
    return path


# 下载图片
def DownloadPicture(download_url, list, path):
    # 访问目标网址
    r = requests.get(url=download_url, timeout=20)
    r.encoding = r.apparent_encoding
    soup = BeautifulSoup(r.text, "html.parser")

    # 解析网址,提取目标图片相关信息,注:这里的解析方法是不固定的,可以根据实际的情况灵活使用
    p = soup.find_all("p")   #p中是所有p块的信息
    tag = p[6].find_all("img")  # 得到该页面目标图片的信息

    # 下载图片
    j = 0
    for i in range(num):
        if (j < len(tag) and tag[j].attrs['src'] != None):
            img_name = str(i) + ".png"  # 以数字命名图片,图片格式为jpg
            # 获取目标图片下载地址的后半部分
            imgae_down_url_2 = tag[j].attrs['src']
            j = j + 1
            # 把目标图片地址的前后两部分拼接起来,得到完整的下载地址
            imgae_down_url = imgae_down_url_1 + imgae_down_url_2
            print("imgae_down_url: ", imgae_down_url)

            # 下载图片
            try:
                img_data = requests.get(imgae_down_url)
            except:
                continue
            # 保存图片
            img_path = path + img_name
            with open(img_path, 'wb') as fp:
                fp.write(img_data.content)
            print(img_name, "   ******下载完成!")


# 主函数
if __name__ == "__main__":
    # 创建保存数据的文件夹
    path = CreateFolder(file_name)
    print("创建文件夹成功: ", path)
    page_url = download_url  # 要爬取的网页地址

# 下载图片
    DownloadPicture(page_url, num, path)  # 注:这个网站每一页最多是22张图片,每张图片我都用数字命名

    print("全部下载完成!", "共" + str(len(os.listdir(path))) + "张图片")

二、使用pytesseract库识别图片中数据,并将数据存入txt文件

有了图片之后就要对图片上的数据进行识别,pytesseract库是一个封装性较好的库,安装之后就可以调用该库进行字符识别。

调用pytesseract库进行图片中的数据识别(一开始识别精度并不高,查了一下原因发现默认的识别方法是识别文字的,而本次任务是识别数据,其实并不是很适用。所以我搜索了一下pytesseract库使用方法,发现确实可以使用“只识别数字”模式,这种模式识别的精确度果然提高了很多)

但是识别出的结果中不仅有数字,由于图片上有水印,所以结果中还有很多标点符号和乱码,需要过滤掉这些东西。所以我建立了一个停用词列表,过滤掉这些乱码和标点符号,并将过滤后的数据写入txt文件

python图片数字提取,python,numpy,pandas,beautifulsoup

 

识别后并写入txt文件效果:

python图片数字提取,python,numpy,pandas,beautifulsoup

 图片识别代码如下:

from PIL import Image
import pytesseract
import os


def read_image(name):

    text=pytesseract.image_to_string(Image.open(name), lang='chi_sim',config=r'-c tessedit_char_whitelist=0123456789 --psm 6')
    exclude_char_list='.:\\|\'?!"[]()@#$%^&*<>/'
    text=''.join([x for x in text if x not in exclude_char_list])
    fp2 = open('2020li.txt', 'a')

    fp2.write(text)
    fp2.close()


def main():
    path = "./"
    for path, dir, file in os.walk(path):
        break
    pic = []
    for i in file:
        if (".png" in i):
            pic.append(i)
    for j in pic:
        read_image(j)


if __name__ == '__main__':
    main()

 

三、用pandas库实现txt文件到csv文件的转换

最后一步,将txt文件转换成csv文件,前提是数据和数据之间有空格,并且格式正确

python图片数字提取,python,numpy,pandas,beautifulsoup

 

(对于识别出的这些数据,我还是进行人工复查了一遍,发现识别的准确率在90%左右,出现的一些小错误要手动修改一下)

 

python图片数字提取,python,numpy,pandas,beautifulsoup

 txt数据写入csv文件代码如下:

import numpy as np
import pandas as pd

txt = np.loadtxt('2020li.txt')
txtDF = pd.DataFrame(txt)
txtDF.to_csv('2020li.csv', index=False)

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

到了这里,关于Python批量识别图片文字(数字识别模式)大幅度提高数字识别准确率的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 小成本大幅度增幅CNN鲁棒性,完美的结合GLCM+CNN

            本文以实验为导向,使用vgg16+GLCM实现一场精彩的新冠肺炎的分类识别,并且对比不加GLCM后的效果。在这之前,我们需要弄明白一些前缀知识和概念问题: GLCM (Gray-Level Co-occurrence Matrix),中文称为灰度共生矩阵,是一种用于图像纹理特征提取的统计方法。它是由

    2024年02月14日
    浏览(37)
  • 零代码编程:用ChatGPT批量识别图片PDF中的文字

    有些PDF页面是图片格式,要怎么批量把图片中的文字识别出来?借助ChatGPT可以轻松完成这个任务。 首先要安装一些相关的软件和Python库。 安装tesseract-ocr(OCR)软件,最新版的是tesseract-ocr-w64-setup-v5.3.0.20221214.exe ,下载地址是https://digi.bib.uni-mannheim.de/tesseract/tesseract-ocr-w64-se

    2024年02月15日
    浏览(57)
  • python-图片文字识别

    两种方法 1. 第一种方法 2. 第二种方法

    2024年02月15日
    浏览(46)
  • 【Python • 图片识别】pytesseract快速识别提取图片中的文字

    提示:本文多图,请手机端注意流量。 利用python做图片识别,识别提取图片中的文字会有很多方法,但是想要简单一点怎么办,那就可以使用tesseract识别引擎来实现,一行代码就可以做到提取图片文本。 本程序用到了两个python库,pytesseract和PIL,所以先来安装。 运行以下命

    2024年02月02日
    浏览(42)
  • YOLOv8最新改进系列:融合最新顶会提出的HCANet网络中卷积和注意力融合模块(CAFM),有效提升小目标检测性能,大幅度拉升目标检测效果!遥遥领先!

    B站全文戳这里! 详细的改进教程以及源码,戳这!戳这!!戳这!!!B站:AI学术叫叫兽 源码在相簿的链接中,动态中也有链接,感谢支持!祝科研遥遥领先! 截止到发稿时,B站YOLOv8最新改进系列的源码包,已更新40种+损失函数的改进!自己排列组合2-4种后,不考虑位置

    2024年04月16日
    浏览(93)
  • 使用python进行图片的文字识别

    Tesseract OCR 是一款由 Google 团队开发的开源 OCR(Optical Character Recognition,光学字符识别)引擎,用于将图片、PDF 等格式中的文本转换为可编辑的文本格式。自 1985 年首次发布以来,它已经经历了多个版本和改进,并成为目前最受欢迎的 OCR 引擎之一。 Tesseract OCR 支持多种语言,

    2024年02月09日
    浏览(43)
  • Python识别图片中的文字

    不知道大家有没有遇到过这样的问题,就是在某个软件或者某个网页里面有一篇文章,你非常喜欢,但是不能复制。或者像百度文档一样,只能复制一部分,这个时候我们就会选择截图保存。但是当我们想用到里面的文字时,还是要一个字一个字打出来。那么我们能不能直接

    2024年01月18日
    浏览(57)
  • 通过Python的pytesseract库识别图片中的文字

    大家好,我是空空star,本篇给大家分享一下通过Python的pytesseract库识别图片中的文字。 本篇所用软件相关版本: macOS 11.6.5 Python 3.8.9 pytesseract 0.3.10 Pillow 9.4.0 Pytesseract是一个Python的OCR库,它可以识别图片中的文本并将其转换成文本形式。Pytesseract基于Google的Tesseract OCR引擎,具

    2024年02月03日
    浏览(43)
  • 【Python 常用脚本及命令系列 9 -- 图片文字识别 EasyOCR使用】

    Python中有一个不错的OCR库-EasyOCR,在GitHub已有9700 star。它可以在python中调用,用来识别图像中的文字,并输出为文本。EasyOCR支持超过80种语言的识别,包括英语、中文(简繁)、阿拉伯文、日文等,并且该库在不断更新中,未来会支持更多的语言。 1.1.1 EasyOCR 安装 安装过程比

    2024年02月07日
    浏览(49)
  • python opencv:批量识别拼接图片分界线并进行自动裁剪

    在网上找图片素材时,有很多的图片是长图片,在一张图片上拼接了许多张图片,而很多时候我们需要单张图片,此时就需要将长图进行裁剪,一般可以用图片工具进行简单裁剪,高级点可以采用ps进行切片处理,如果图片数量少还好说一旦有大量的图片需要裁剪就很繁琐并

    2024年02月11日
    浏览(52)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包