基于 EasyOCR + HanLp 实现图片文字实体(中文姓名、机构名、地域名)识别

news2024/11/18 11:28:10

一、EasyOCR + HanLp

EasyOCR 是一个python版的文字识别工具。目前支持80中语言的识别。并且支持:图像预处理(去噪、色彩饱和度、尖锐处理)、CRAFT文字检测、中间处理(倾斜处理等)、文字识别、后续处理、输出结果。框架如下:

在这里插入图片描述
HanLP 是一系列模型与算法组成的NLP工具包,目标是普及自然语言处理在生产环境中的应用。HanLP具备功能完善、性能高效、架构清晰、语料时新、可自定义的特点。内部算法经过工业界和学术界考验,配套书籍《自然语言处理入门》已经出版。目前,基于深度学习的HanLP 2.x已正式发布,次世代最先进的NLP技术,支持包括简繁中英日俄法德在内的104种语言上的联合任务。

下面采用 EasyOCR 提取出文本中的文字,利用 HanLP 分析出文本中的 中文姓名、机构名、地域名 等信息。

二、环境准备

python环境:3.6

安装 EasyOCR

pip install easyocr

安装好依赖,执行检测如果模型不存在会自动下载模型,不过下载时间很长容易失败,可以去官方网站中下载文本检测模型和文本分析模型:

https://www.jaided.ai/easyocr/modelhub/

下载文本识别模型:

在这里插入图片描述

下载文本检测模型:

在这里插入图片描述
下载后解压放到项目的 model 目录下:
在这里插入图片描述

安装 HanLp

pip install pyhanlp

HanLp 的模型如果不存在也会自动下载,这个下载速度较快。

三、图片文字实体识别

下面是我准备的图片,其中姓名、机构名、地域名,还有一些干扰文字
请添加图片描述
编写识别程序:

import easyocr
from pyhanlp import HanLP
from PIL import Image, ImageDraw

def recognize():
    # 加载 easyocr 模型,并制定语种
    reader = easyocr.Reader(['ch_sim', 'en'], model_storage_directory='model')
    # 图片位置
    imgPath = 'img/1.jpeg'
    # 识别图片中的文字
    result = reader.readtext(imgPath, detail=1)
    # 使用 PIL 读取图片,画出识别框
    image  = Image.open(imgPath)
    # 对图片绘图
    draw = ImageDraw.Draw(image)
    # 存放识别出所有文字,进行NLP解析
    text = ''
    for item in result:
        text += item[1]+' '
        # 画矩形框
        draw.rectangle((tuple(item[0][0]), tuple(item[0][2])), fill=None, outline=(255, 0, 0), width=2)
        print("提取到文字块:",item)
    print("==================================================")
    print("识别文字文本: ",text)
    # 创建分词器
    segment = HanLP.newSegment().enableNameRecognize(True).enableOrganizationRecognize(True).enablePlaceRecognize(True)
    # 提取实体
    cut_word = segment.seg(text)
    print(cut_word)
    # 存放人名
    name = []
    organization = []
    place = []
    for item in cut_word:
        word = item.word
        nature = item.nature.toString()
        if nature == 'nr':
            name.append(word)
        elif nature == 'ns':
            place.append(word)
        elif nature == 'nt':
            organization.append(word)

    print("识别中文姓名:",name)
    print("识别机构名:",organization)
    print("识别地域名:",place)
    image.show()

if __name__ == '__main__':
    recognize()

运行程序,如果没有 HanLP ,则自动下载:

在这里插入图片描述
识别文字情况:

在这里插入图片描述
可以看到文字都被捕捉到了,下面看词语分析效果:

在这里插入图片描述
已成功提取相关实体信息。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

RHCE实验--ansible

第四章 1、使用debug模块,显示当前受管主机的dns服务器的ip地址。 2、将createuser.fact文件传输到受管主机上作为自定义事实变量文件(/etc/ansible/facts.d/),该文件的内容如下: [general] username wujing mima…

以太网 STP临时环路的产生、STP BPDU的转发过程、根桥故障案例分析。

2.10.2 以太网 传统STP生成树(STP临时环路、STP BPDU的转发过程、根桥故障案例) 传统STP生成树2.10.2 以太网 传统STP生成树(STP临时环路、STP BPDU的转发过程、根桥故障案例)STP临时环路:STP BPDU的转发过程&#xff…

多维数据分析

【数据挖掘】数据挖掘#商业智能(BI)数据分析挖掘概念 数据挖掘目前在各类企业和机构中蓬勃发展。因此我们制作了一份此领域常见术语总结。 分析型客户关系管理(Analytical CRM/aCRM): 用于支持决策,改善公司跟顾客的…

redis集群详细搭建方式(含原理、操作指令、异常处理)

目录 1.概述 2.配置 2.1.配置文件 2.2.合体 2.3.进入cli 3.集群操作 3.1.查看集群信息 3.2.集群中录入值 3.3.查询集群中的值 4.故障处理 1.概述 概念: redis集群是从3.0版本开始支持的一个功能,是redis的一种水平扩展方式,将全局数据分…

NNDL 作业12:第七章课后题

习题7-1在小批量梯度下降中,试分析为什么学习率要和批量大小成正比. 在小批量梯度下降中: 令,则: 因此我们要使得参数最优,则为最优的时候的常数,故学习率要和批量大小成正比。 习题7-2在Adam算法中,说明指数加权平均…

以太网 传统STP生成树的BPDU介绍、STP端口状态介绍与切换过程,STP详细的工作过程。

2.10.1 以太网 传统STP生成树(STP BPDU、STP端口状态、STP工作过程) STP生成树协议的之间的交互通过STP BPDU(根协议数据单元,Bridge Protocol Data Unit)进行。 传统STP生成树2.10.1 以太网 传统STP生成树&#xff0…

《码出高效》五 异常与日志

前言 本章主要是讲异常处理,关于异常主要有三个问题: 哪里发生异常 谁来处理异常 如何处理异常 围绕这三个问题就有了一套异常处理机制 异常分类 通常异常时针对不稳定代码的,并且需要区分类型 throw和throws的区别: 以此段代…

session条件竞争

PHP SESSION 的存储 Session会话存储方式 PHP将session以文件的形式存储服务器的文件中,session.save_path来控制 默认路径 /var/lib/php/sess_PHPSESSID /var/lib/php/sessions/sess_PHPSESSID /tmp/sess_PHPSESSID /tmp/sessions/sess_PHPSESSID session文件默…

PS图层+移动工具(2)复制删除快捷键 图层分组 前景色填充

查看此文前 你需要先读 PS图层移动工具(1)图层概念-拖动操作-移动工具基础 其实显示变换控件 这个配置相对 是容易造成错误操作 不小心就把文件拖动了 当我们想调这些时 可以直接 按住键盘上的 CtrlT 然后点击图层 这个操作框就出来了 然后调好之后 还是 直接用鼠标双击图层 就…

荧光染料Sulfo-Cyanine 7 Tyramide,Tyramide-Sulfo-Cy7,磺酸基-花青素Cy7 酪酰胺

一:产品描述 1、名称 英文:Sulfo-Cyanine 7 Tyramide,Tyramide-Sulfo-Cy7 中文:磺酸基-花青素Cy7 酪酰胺 2、所属分类:Cyanine 3、分子式:C43H51N3O8S2 4、分子量:802.01 5、质量控制&am…

二叉树的序列化与反序列化

二叉树的序列化与反序列化 通俗的说就是给定一个二叉树的根节点,用某种方法将树结构的信息存到一个字符串中,并且还可以用这一个字符串还原这棵树。 本文介绍两种方法,分别为递归法和迭代法。 剑指 Offer 37. 序列化二叉树 递归法 序列化&a…

final域的内存语义

重排序规则 1. 在构造函数内对一个final域的写入,与随后把这个被构造对象引用赋值给一个引用变量,着两个操作不能重排序 2. 初次读一个包含final域的对象的引用,与随后初次读取这个final域,这两个操作不能重排序 以下面实例作说明…

基于ssm作业管理系统

随着计算机以及网络的普及,教师与学生对辅助教学方式的要求也越来越高,在教学辅助方式上追求质量及效率。作为教学核心组成之一的作业管理也趋向更加便 捷快速的方式。 经过调查,现阶段高校进行作业管理的方式主要有三种: 情况一&…

SSM学生宿舍管理系统(附源码)

本次介绍的是一个基于SSMJSP开发的学生宿舍管理系统的设计与实现,界面简洁、程序逻辑清晰,适合作为毕业设计的模板参考! 前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家 …

阿里妈妈star论文重点记录

论文地址:https://arxiv.org/pdf/2101.11427.pdf 1:业务实际应用 自 2020 年底以来,STAR 已部署在阿里巴巴展示广告系统,点击率提升8.0%和RPM增加6% 2:特点 星型拓扑促进跨多个domain的有效信息转换,在…

MATLB|抽水蓄能电站系统的最优竞价策略研究

💥💥💥💞💞💞欢迎来到本博客❤️❤️❤️💥💥💥🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清…

Python自动化测试面试题——接口篇

目录 网络模型 OSI有哪几层,分别包含哪些协议? 协议 TCP,UDP的区别? TCP如何确保可靠传输? 三次握手与四次挥手? HTTP有哪些请求方法? HTTP常见的状态码有哪些? GET和POST的区别? Cookie和Session的区别? Token和Session的区别? HTTP和HTTPS的区别? 接口…

JavaScript(二):变量、数据类型、类型转换

变量一、变量的使用1.声明变量2.赋值3.变量的初始化4.变量的更新5.同时声明多个变量6.声明变量的特殊情况7.变量的命名规则二、数据类型数字型1.数字型Number2.数字型范围3.数字型的特殊值4.isNaA()字符串型String1.字符串型格式2.字符串型引号嵌套3.字符串转义符4.字符串长度5…

R语言相关分析和稳健线性回归分析

介绍 下面以物种多样性为例子展示了如何在R语言中进行相关分析和线性回归分析。 怎么做测试 相关和线性回归示例 Data read.table(textConnection(Input),headerTRUE) 数据简单图 plot(Species ~ Latitude, dataData, pch16,xlab "Latitude", ylab "Specie…

web前端期末大作业:体育网页主题网站设计——体育兵乓球5页面HTML+CSS+JavaScript

🎉精彩专栏推荐 💭文末获取联系 ✍️ 作者简介: 一个热爱把逻辑思维转变为代码的技术博主 💂 作者主页: 【主页——🚀获取更多优质源码】 🎓 web前端期末大作业: 【📚毕设项目精品实战案例 (10…