首页 > 编程语言 >Python工具箱系列(五十五)

Python工具箱系列(五十五)

时间:2024-10-30 15:21:43浏览次数:1  
标签:五十五 tesseract Python text image 识别 install 工具箱 ocr

​​文字识别

文字识别是热门研究方向。目前相对成熟的有:

•Google的tesseract项目,它能识别100多种语言

•基于机器学习的多个项目,例如百度的paddlehub

tesseract使用比较简单,但是配置相对复杂一下。在Ubuntu bionic的安装过程如下。

apt install -y tesseract-ocr
tesseract -v
# 下载中文识别模型
cp chi_sim.traineddata /usr/share/tesseract-ocr/4.00/tessdata
pip install pytesseract

对下图的英文进行识别

 

识别效果如下:

# 命令
tesseract python-ocr-01.png stdout
# 输出
Warning. Invalid resolution 0 dpi. Using 70 instead.
Estimating resolution as 331
PyImageSearch

能够准确识别,随后对下图的中文进行识别。

 

我们使用的python代码如下。

import pytesseract
from pathlib import Path
from PIL import Image

def ocr(filename):
    pth = Path(filename)
    image = Image.open(filename)

    # 图片二值化
    image = image.convert('L')
    # 可以定义阈值
    threshold = 200
    table = []
    for i in range(256):
        if i < threshold:
            table.append(0)
        else:
            table.append(1)
    # 识别图片
    curdir = pth.parent

    tessdata_dir_config = f'--tessdata-dir "{curdir}"'
    content = pytesseract.image_to_string(
        image, lang='chi_sim', config=tessdata_dir_config,)  # 使用简体中文解析图片
    print(content)
    
ocr('/root/dev/gotoolkits/figures/python-ocr-02.png')

以下是识别的结果。

随 着 国 家 对 于 数 字 档 案 管 理 管 理 提 出 了 越 来 越 高 的 要 求 , 档 案 系 统 不 仅
要 进 一 步 提 升 档 案 的 数 字 化 率 , 同 时 也 要 提 供 对 档 案 的 利 用 率 。 目 前 , 大 部
分 档 案 系 统 进 行 了 信 息 系 统 建 设 , 以 及 档 案 数 字 化 工 作 , 但 仍 然 存 在 的 问 题
是 :

@ 数 字 化 率 有 进 一 步 提 升 的 空 间

@ 数 字 化 后 的 档 案 以 图 片 保 存 ,OCR 转 换 的 成 功 率 有 待 提 升 .

_ 大 部 分 还 没 有 实 现 全 文 检 索 , 只 能 够 根 据 档 案 通 用 管 理 要 求 , 提 供

基 于 现 有 编 码 体 制 的 查 询 , 无 法 根 据 档 案 自 身 的 内 容 进 行 检 索

从识别效果来看还是不错的。但是对于视频文件中的字幕识别就有些不太好了,原因在于背景过于凌乱。如下图所示。

 

使用上述代码识别的结果是:自 眉 鸦 王 有 仓 外 孙 卯

这个结果确实不能够让人满意。下面使用百度的paddlehub进行测试。

import paddlehub as hub
module = hub.Module(name='chinese_ocr_db_crnn_mobile')

img_path_list = ['/root/dev/gotoolkits/figures/python-ocr-03.png']
results = module.recognize_text(paths=img_path_list, visualization=True)
for result in results:
    print(result)

第一次运行时,要下载训练模型数据,需要时间较长。输出结果如下。

{'save_path': 'ocr_result/ndarray_1662260520.7737947.jpg', 'data': [{'text': '高清翡翠台', 'confidence': 0.7626923322677612, 'text_box_position': [[1188, 54], [1348, 47], [1350, 87], [1189, 94]]}, {'text': '白眉鹰王有个外孙', 'confidence': 0.9479637742042542, 'text_box_position': [[583, 740], [858, 740], [858, 779], [583, 779]]}]}

能够看出,识别的可信度还是非常高的。paddlehub的安装过程如下。

--javascripttypescriptbashsqljsonhtmlcssccppjavarubypythongorustmarkdown

pip install PyYAML -U --ignore-installed
 pip install --upgrade packaging
pip install paddlepaddle paddlehub
pip install shapely pyclipper

标签:五十五,tesseract,Python,text,image,识别,install,工具箱,ocr
From: https://www.cnblogs.com/shanxihualu/p/18515890

相关文章

  • Python工具箱系列(五十六)
    抠图抠图是基本需求,最常见的应用场景就是证件照,每次去拍照,都要用个纯色的幕布,而且要求衣服不能太浅。其实背后是有原因的:为了管理部门更准确识别出人像。许多科幻电影也是要求演员在绿幕前表演,后期抠图合成逼真的电影。抠图工具非常多,例如PhotoShop就是抠图利器,可以很神奇地把图......
  • Python工具箱系列(五十七)
    图像分割与人脸识别众所周知图像是由若干有意义的像素组成的,图像分割作为计算机视觉的基础,对具有现有目标和较精确边界的图像进行分割,实现在图像像素级别上的分类任务。图像分割可分为语义分割和实例分割两类,区别如下:语义分割:将图像中每个像素赋予一个类别标签,用不同的颜色来表......
  • python调用grpc请求
    gRPC是一款高性能、开源的RPC框架,支持多种编程语言。Protobuf是gRPC使用的默认序化协议,可以将结构化数据序列化为二进制格式,提高数据传输效率。在Python中使用gRPC调用服务时,通常需要先定义协议缓冲区(ProtocolBuffers)消息类型,这些类型是从.proto文件生成的。当你准备调用一个gRP......
  • 【EI复现】基于深度强化学习的微能源网能量管理与优化策略研究(Python代码实现)
    ......
  • 【EI复现】基于深度强化学习的微能源网能量管理与优化策略研究(Python代码实现)
    ......
  • python毕业设计django基于协同过滤算法的养老新闻推荐网站
    文章目录前言一、项目介绍三、功能介绍四、核心代码五、效果图前言Django基于协同过滤算法的养老新闻推荐网站是一个结合了Django框架和协同过滤推荐算法的养老领域信息服务系统。该系统旨在通过个性化推荐算法,向用户推荐符合其兴趣偏好的养老新闻,以提高用户体验和......
  • Python毕业设计基于Python+Django的人事管理系统
    文章目录项目介绍技术介绍功能介绍核心代码数据库参考系统效果图文章目录项目介绍  人事管理系统的目的是让使用者可以更方便的将人、设备和场景更立体的连接在一起。能让用户以更科幻的方式使用产品,体验高科技时代带给人们的方便,同时也能让用户体会到与以往常规......
  • Python基础16_数据结构:队列&树
    一、队列队列(Queue),它是一种运算受限的线性表,先进先出(FIFOFirstInFirstOut)-队列是一种受限的线性结构-受限之处在于它只允许在表的前端(front)进行删除操作,而在表的后端(rear)进行插入操作Python标准库中的queue模块提供了多种队列实现,包括普通队列、双端队列、......
  • python之Requests模块
    python中文官方文档:https://docs.python.org/zh-cn/3/Requests中文官方文档地址:https://requests.readthedocs.io/projects/cn/zh_CN/latest/1.Requests模块快速入门requests库的基本使用详解1.Requests模块作用:发送http请求,获取响应数据2.Requests模块是第三方模块,需要......
  • Python表格格式转换模块:tablib
    文章目录安装创建表格导出数据读写安装Tablib是Python的表格转换插件,支持不同格式表格之间的转换,其推荐的安装方式为pipinstall"tablib[all]"其中,all等同于html,pandas,ods,xls,xlsx,yaml,表示在安装tablib的基础上,同时对这些不同的文件格式提供支持。如果......