基于easyocr+hanlp实现图片文字实体(中文姓名机构名地域名)识别(代码片段)

小毕超 小毕超     2023-01-12     762

关键词:

一、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 ,则自动下载:


识别文字情况:


可以看到文字都被捕捉到了,下面看词语分析效果:


已成功提取相关实体信息。

基于easyocr+hanlp实现图片文字实体(中文姓名机构名地域名)识别(代码片段)

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

python使用easyocr实现图片文字识别

​​项目git地址​​1.安装easyocrpipinstalleasyocr2.使用easyocrword.pngpython代码:importeasyocrimportsslssl._create_default_https_context=ssl._create_unverified_contextreader=easyocr.Reader([ch_sim,en])#thisneedstor 查看详情

python使用easyocr模块完成图片文字识别

参考技术A  EasyOCR实际上是一个python包,它将pytorch作为后端处理程序。EasyOCR像任何其他OCR(谷歌的tesseract或任何其他OCR)一样从图像中检测文本,但在我使用它的参考资料中,我发现它是从图像中检测文本的最直接的方... 查看详情

如何改进hanlp命名实体识别

...名实体识别的性能。参考技术A1.增加数据量:由于HanLP是基于深度学习的命名实体识别,数据量的多寡对最终的结果有很大的影响。所以增加更多的数据,比如更丰富的文本,更多类型的实体,这将有助于HanLP模型的改进。2.改进... 查看详情

hanlp中人名识别分析(代码片段)

HanLP中人名识别分析在看源码之前,先看几遍论文《基于角色标注的中国人名自动识别研究》关于命名识别的一些问题,可参考下列一些issue:名字识别的问题#387机构名识别错误HanLP参考博客:词性标注层叠HMM-Viterbi角色标注模型... 查看详情

数据挖掘:基于spark+hanlp实现影视评论关键词抽取(代码片段)

1.背景近日项目要求基于爬取的影视评论信息,抽取影视的关键字信息。考虑到影视评论数据量较大,因此采用Spark处理框架。关键词提取的处理主要包含分词+算法抽取两部分。目前分词工具包较为主流的,包括哈工大的LTP以及H... 查看详情

hanlp基于朴素贝叶斯训练文本分类(代码片段)

一、HanLP朴素贝叶斯分类器HanLP针对文本分类算法已经帮我们实现朴素贝叶斯法,用户可以无需关心内部细节,HanLP也提供了相关自定义训练接口,前提需要将数据集根据分类放到不同的目录中,例如:官方给... 查看详情

hanlp基于朴素贝叶斯训练文本分类(代码片段)

一、HanLP朴素贝叶斯分类器HanLP针对文本分类算法已经帮我们实现朴素贝叶斯法,用户可以无需关心内部细节,HanLP也提供了相关自定义训练接口,前提需要将数据集根据分类放到不同的目录中,例如:官方给... 查看详情

第九届软件杯(第二批)基于深度学习的企业实体识别(代码片段)

本赛题分为三个模块:文字检测、文字识别、命名实体识别。赛题要求将图片中的所有文字检测并识别出来,并从识别出的文字中提取出企业名称。文字检测模块数据准备ICDAR2019-LSVT数据集,下载并解压后的数据集如下:~/train_da... 查看详情

easyocr简单实用(代码片段)

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

css基于文字的图片马赛克你见过吗(代码片段)

看到封面这张图,是不是如同艺术品一般,第一次看到这张图时,是比较震惊的,迫不及待的研究其源码是如何实现的,最后更为惊奇的是只需要纯CSS即可实现,接下来就展开说明实现过程。前置知识点实现此效果需要了解2个... 查看详情

实现倾斜文字水印背景

  早上群里有人问:斜体文字水印背景,文字不确定的怎么做。刚好前段时间做过,特此分享下并记录。  其主要原理是利用UIColor类的一个方法:把图片变成颜色。[[UIColoralloc]initWithPatternImage:xxxxx];该方法会把图片平铺变成... 查看详情

hanlp基于svm支持向量机训练文本分类(代码片段)

一、HanLP基于SVM支持向量机分类器上篇文章通过朴素贝叶斯文本分类器,训练测试了搜狗文本分类语料库迷你版,本篇继续测试SVM支持向量机分类器。由于HanLP官方给出的SVM分类器依赖了第三方库,没有集成在主项目... 查看详情

hanlp基于svm支持向量机训练文本分类(代码片段)

一、HanLP基于SVM支持向量机分类器上篇文章通过朴素贝叶斯文本分类器,训练测试了搜狗文本分类语料库迷你版,本篇继续测试SVM支持向量机分类器。由于HanLP官方给出的SVM分类器依赖了第三方库,没有集成在主项目... 查看详情

基于tesseract模块python实现提取图片中的文字信息(安装+使用教程)(代码片段)

Python实现提取图片中的文字可以使用OpticalCharacterRecognition(OCR)技术来解决。OCR是指将图像中的文本转换成可编辑的文本的过程。Python有许多OCR库,但最流行和最广泛使用的是Tesseract库。下面是一个使用Python和Tesseract来提取图... 查看详情

如何使用鼠标在图像中绘制特定区域并使用 Pytesseract 或 EasyOCR 提取该文本?

】如何使用鼠标在图像中绘制特定区域并使用Pytesseract或EasyOCR提取该文本?【英文标题】:HowtoadrawaspecificregioninimagewithmouseandextractthattextwithPytesseractorEasyOCR?【发布时间】:2021-12-3119:28:14【问题描述】:例如我有一张像下面这样的... 查看详情

基于vue-ant实现图片上传

引言:上传是将信息(网页、文字、图片、视频等)通过网页或者上传工具发布到远程服务器上的过程。如何使用Ant-design-vue中的a-upload上传组件进行图片或者视频的上传呢?正文:1.template中:<a-form-model-itemlabel="图片"prop="sheetPi... 查看详情

yolov5/v7flaskweb车牌识别|yolov7+easyocr实现车牌识别(代码片段)

...供详细开发教程。YOLOv7FlaskWeb车牌识别视频效果展示YOLOv7+EasyOCR实现车牌识别什么是Flask?简介Flask是一个轻量级的可定制框架,使用Python语言编写,较其他同类型框架更为灵活、轻便、安全且容易上手。它可以很好地结合MVC模式进... 查看详情