首页 > 其他分享 >使用Tesseract进行图片文字识别

使用Tesseract进行图片文字识别

时间:2024-12-06 11:10:24浏览次数:4  
标签:文本 Tesseract 识别 tesseract png 图片

Tesseract介绍

Tesseract 是一个开源的光学字符识别(OCR)引擎,最初由 HP 在 1985 年至 1995 年间开发,后来被 Google 收购并开源。Tesseract 支持多种语言的文本识别,能够识别图片中的文字,并将其转换为可编辑和可搜索的数据格式。它适用于多种应用场景,包括文档扫描、图像处理、数字存档等。

Tesseract 的最新版本显著提高了识别准确率,支持的文件格式包括 TIFF、JPEG、PNG 等常见图片格式。此外,Tesseract 还提供了一个命令行工具,允许用户通过简单的命令行输入来执行 OCR 任务。对于开发者而言,Tesseract 提供了多种编程语言的 API 接口,如 C++、Python、Java 等,使得集成 OCR 功能到各种应用程序中变得更为容易。

除了基本的 OCR 功能外,Tesseract 还支持语言模型和训练工具,允许用户根据特定需求训练自定义模型,以提高某些特定类型或格式文本的识别准确率。这些特性使得 Tesseract 成为了一个强大而灵活的 OCR 工具,广泛应用于个人和企业的文本数字化处理中。

GitHub地址:https://github.com/tesseract-ocr/tesseract

官方文档地址:https://tesseract-ocr.github.io

image-20241206093004264

下载安装Tesseract

下载Tesseract

Home · UB-Mannheim/tesseract Wiki

image-20241205154902702

安装的时候,记得选上中文语言包:

image-20241205155311078

输入

tesseract -v

查看Tesseract是否安装成功

image-20241205155544017

设置环境变量:

image-20241205155637253

image-20241205155659991

image-20241205155730786

输入Tesseract的安装地址:

image-20241205155954574

注意安装路径最好不要包含中文,由于C盘空间还比较充足,我就装在默认位置了。

再次验证安装是否完成:

tesseract -v

image-20241205160217678

安装成功完成。

Tesseract的基本命令行使用

基本文本识别

最简单的命令是将图片中的文本识别并输出到标准输出(屏幕):

tesseract D:\test2.png stdout

默认识别的是英文的,先拿一个英文的图片试试:

图片文字识别的效果

image-20241206090525850

效果还是很ok的。

再试试一个中文的图片:

image-20241206090807707

默认是无法识别中文的,这时候需要指定语言才行。

指定一种语言识别

如果图片中的文字不是英文,你需要指定相应的语言。Tesseract 支持多种语言,可以通过以下命令查看支持的语言:

tesseract --list-langs

image-20241206091040601

会出现你已经下载了语言包的语言。

指定语言的命令如下(例如,识别中文):

tesseract D:\test.png stdout -l chi_sim

这里的 -l chi_sim 表示使用简体中文语言模型。

image-20241206091338414

效果也很不错。

指定多种语言识别

有时候我们需要同时识别多种语言,以下面这张图片为例:

在命令行中添加-l LANG[+LANG]可以使用多种语言进行识别:

tesseract D:\test3.png stdout  -l eng+chi_sim

image-20241206094034416

效果也还行。但是会发现识别的中文很多地方都有空格。

将中文改为主要识别语言:

tesseract D:\test3.png stdout  -l chi_sim+eng

image-20241206094257778

可以发现识别的空格少了很多。

保存识别文本到文件

也可以把识别的内容保存在一个txt文件中,命令如下所示:

tesseract D:\test2.png D:\output.txt 

image-20241206092534999

使用quiet模式抑制消息

不使用quiet模式与使用quiet模式的对比:

image-20241206094844541

少了表示 Tesseract 正在尝试估算输入图像的分辨率的信息Estimating resolution as 182

可搜索的pdf输出

这将创建一个包含图像和单独可搜索文本层的PDF,其中包含识别出的文本:

tesseract D:\test2.png D:\output -l eng pdf

实现效果:

image-20241206095505631

HOCR输出

在命令末尾添加hocr以使用‘hocr’配置文件,获取HOCR输出:

tesseract D:\test2.png - -l eng hocr

识别效果:

image-20241206095846301

这样不够直观,保存在一个html文件中,然后再打开看看:

tesseract D:\test2.png D:\test2.html -l eng hocr

把生成的文件后缀改为.html,用浏览器打开,效果如下所示:

image-20241206100421063

TSV输出

在命令末尾添加“tsv”配置文件以获取TSV输出:

tesseract D:\test5.jpg - -l chi_sim tsv

以这张图片为例:

实现效果如下所示:

image-20241206101407184

使用不同的页面分割模式

-psm 3 - 全自动页面分割,但无方向和脚本检测。(默认)

以这张图片为例:

tesseract D:\test4.png - --psm 3

实现的效果:

image-20241206102552259

-psm 6 - 假定文本为一个整体均匀的块。

以这张图片为例:

tesseract D:\test5.png - --psm 6

实现效果如下所示:

image-20241206103029396

使用 -c preserve_interword_spaces=1 来保留空格

tesseract D:\test5.png - --psm 6 -c preserve_interword_spaces=1

实现效果如下所示:

image-20241206103136672

使用pdftotext保持文本输出的布局

tesseract D:\test5.png D:\test5 -l eng –psm 11 pdf

实现的效果:

image-20241206104231827

总结

现在图片文字识别已经有多种方式可以实现,也可以通过云服务商的文字识别服务,缺点就是需要网络,数量多了需要收费,优点就是识别准确率比较高。使用Tesseract与PaddleOCR这种方式的好处就是离线可用,速度也挺快的。还有一种目前还没试过的方式,就是使用多模态的大语言模型,缺点可能就是如果使用大模型服务提供商会比较耗费token,自己本地用ollama又比较吃配置相对于Tesseract与PaddleOCR而言,还有就是多模态大语言模型可能自己会出现一些别的内容。

之前写过几篇关于PaddleOCR的文章,感兴趣也可以阅读:

1、如何自己动手实现一个图片解答小助手

2、C#使用PaddleOCR进行图片文字识别

标签:文本,Tesseract,识别,tesseract,png,图片
From: https://www.cnblogs.com/mingupupu/p/18590261

相关文章

  • 使用 Vyper 与 Python 结合实现文字识别(OCR)
    Vyper是一种用于编写智能合约的语言,它被设计为Python语言的替代品,旨在提供更简单、安全的代码。然而,Vyper本身并不用于传统的应用程序开发或计算机视觉任务。因此,我们将通过Vyper语言和Python结合,利用Python中的OCR库来实现一个简单的文字识别功能。在本例中,Python......
  • YOLOv8车牌识别系统 深度学习 LPRNet算法 pytorch 大数据 毕业设计(源码)✅
    YOLOv8车牌识别系统深度学习LPRNet算法pytorch大数据毕业设计(源码)✅1、项目介绍技术栈:Python3.8YOLOv8深度学习LPRNet算法pytorch2、项目界面(1)上传图片进行车牌识别(2)上传图片进行车牌识别2(3)多车牌号码进行车牌识别(4)上传视频进行车牌识别实时检测(5)连接......
  • 使用 Go 语言实现简单的文字识别(OCR)
    随着人工智能技术的迅猛发展,文字识别(OCR,OpticalCharacterRecognition)已经广泛应用于文档扫描、自动化数据输入等领域。在这篇文章中,我们将通过Go语言实现一个简单的文字识别程序,来提取图片中的文字。为了方便操作,我们将使用GoCV库,这是一个基于OpenCV的Go语言绑定,提供了......
  • pdf转图片
     1.安装 Release,配置环境变量Release24.08.0-0 Latest Compare github-actions releasedthis Oct7 v24.08.0-0 d155855 Mergepullrequest#71fromFdawgs/patch-1Poppler24.08.0Assets 3Release-24.08.0-0.zip14.4MBSourc......
  • 使用 Dart 实现简单的文字识别程序
    文字识别(OpticalCharacterRecognition,OCR)是计算机视觉中的一种技术,通过将图片中的文字提取为可编辑的文本,使得计算机能够理解图像中的信息。在这篇文章中,我们将用Dart语言实现一个简单的文字识别程序。为了简化工作,我们将使用Dart的第三方库firebase_ml_vision来实现O......
  • 给一个图片设置透明有哪些方式呢?
    在前端开发中,设置图片透明的方法主要有以下几种:1.使用CSS的opacity属性:这是最常用且最简单的方法。opacity属性可以设置元素的透明度,取值范围从0.0(完全透明)到1.0(完全不透明)。img{opacity:0.5;/*设置图片透明度为50%*/}优点:简单易用,兼容性好。......
  • 使用css写一个垂直翻转图片的效果
    .flipped-image{transform:scaleY(-1);/*Verticallyflipstheimage*/}ThisCSScodesnippetusesthetransformpropertywiththescaleY(-1)function.scaleY()scalestheelementvertically.Avalueof-1flipsitvertically.Howtouseit:HT......
  • 如何让背景图片固定不随滚动条滚动?
    要让背景图片固定不随滚动条滚动,可以使用CSS的background-attachment:fixed;属性。以下是如何在你的CSS代码中实现它的方法:body{background-image:url("your-image.jpg");/*你的图片路径*/background-repeat:no-repeat;/*可选:控制图片是否重复*/backgr......
  • 【目标检测】基于YOLO的多任务识别(道路状况)| labelimg标注
    目录一、yolov5、yolov8、yolov11环境配置二、基础数据集训练三、自己标注数据集训练1、准备工作(1)标记数据文件夹结构(2)安装labelimg2.开始标注3.开始训练编写yaml配置文件开始训练检测模型四、数据集介绍1.提取所有照片2.随机抽取部分照片一、yolov5、yolov8......
  • YOLOv8实战道路裂缝缺陷识别
      本文采用YOLOv8作为核心算法框架,结合PyQt5构建用户界面,使用Python3进行开发。YOLOv8以其高效的实时检测能力,在多个目标检测任务中展现出卓越性能。本研究针对道路裂缝数据集进行训练和优化,该数据集包含丰富的道路裂缝图像样本,为模型的准确性和泛化能力提供了有力保障。......