使用Tesseract进行图片文字识别

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进行图片文字识别

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

智慧营区解决方案

1. 数据处理与服务封装 该智慧化解决方案注重数据的全面采集与处理,包括网页数据、图片、视频等非结构化数据,以及系统数据、文本、关系型数据库等结构化数据。通过数据抽取、稽核、规整、解析、清洗等流程,实现数据的入库与存储&#xff0c…

信号level 1:信号的产生

目录 引言 基础知识(背景) 信号的产生 方法一:通过终端按键产生信号(键盘按键输入) 方式二:通过kill指令 方法3:系统调用 方法四:硬件异常 方法五:软件产生异常 进…

国城杯-misc-Tr4ffIc_w1th_Ste90 [WP]

打开流量包,发现主要是UDP流量,然后还有H264的视频数据 右击,UDP追踪流 然后更换为原始数据 另存为.ts的文件,打开就看到密码 !t15tH3^pAs5W#RD*f0RFL9 打开压缩包是一个文件和一个图片 import numpy as np import cv2 import …

【SpringMVC】参数传递 重定向与转发 REST风格

文章目录 参数传递重定向与转发REST风格 参数传递 ModelAndView:包含视图信息和模型数据信息 public ModelAndView index1(){// 返回页面ModelAndView modelAndView new ModelAndView("视图名");// 或// ModelAndView modelAndView new ModelAndView(…

Minio使用教程

Minio介绍 Minlo是一个基于Apache License v2.0开源协议的对象存储服务。它兼容亚马逊S3云存储服务接口,非常适合于存储大容量非结构化的数据,例如图片、视频、日志文件、备份数据和容器/虚拟机镜像等,而一个对象文件可以是任意大小&#xf…

新手前端开发入职公司全流程

作为一名前端开发新手,进入一家公司开启职业生涯是既兴奋又充满挑战的旅程。今天就来和大家分享一下这个过程中的各个环节。 一、入职准备 在收到心仪公司的offer后,可别只顾着高兴啦。首先要准备好入职资料,像身份证、学历证明这些是必不可…

那智机器人报警白屏

那智机器人内存太多白屏报警!!!下面来说说如何消除该报警吧!!! 白屏报警的处理办法 解决办法:(外部内存清理) 升级操作者权限 (当我们在维修见面不能看见我…

rk3568之mpp开发笔记mpp移植到开发板

前言: 大家好,今天给大家介绍的内容是rk平台的mpp编解码这块的内容,在rk目前看到有三套框架涉及到编解码内容: 1、rkmedia 2、rockit 3、mpp 这三种不同形式的编解码方式,后面再做详细的框架对比,今天我…

【设计模式】结构型设计模式总结之代理模式、装饰模式、外观模式、享元模式

文章目录 代理模式示例结构分类动态代理 装饰模式示例结构使用场景与代理模式区别Context 外观模式结构示例使用场景Context 享元模式结构示例使用场景Message 代理模式 代理模式(Proxy Pattern) 是一种结构型设计模式,它提供了一个代理对象…

CSS一些小点 —— 12.7

1. box-sizing: border-box box-sizing 属性,默认值为 content-box box-sizing: border-box 使padding和border的值不会再影响元素的宽高;padding和border的值算在指定宽高的内部(但是外边距依然算做外部) 2. overflow: hidden …

【毕业设计选题】深度学习类毕业设计选题参考 开题指导

目录 前言 毕设选题 开题指导建议 更多精选选题 选题帮助 最后 前言 大家好,这里是海浪学长毕设专题! 大四是整个大学期间最忙碌的时光,一边要忙着准备考研、考公、考教资或者实习为毕业后面临的升学就业做准备,一边要为毕业设计耗费大量精力。学长给大家整…

算法基础学习Day4(双指针)

文章目录 1.题目2.题目解答1.查找总价格为目标值的两个商品1.1题目及题目解析1.2算法学习暴力解法优化算法 1.3代码提交 2.三数之和2.1题目及题目解析2.2算法学习2.3代码提交 1.题目 LCR 179. 查找总价格为目标值的两个商品 - 力扣(LeetCode)15. 三数之…

哪里可以找到高质量的街道夜景短视频素材?夜景素材网站推荐

在短视频创作的浪潮中,街道夜景作为一种视觉效果独特、氛围浓郁的题材,深受创作者的青睐。不论是商业广告、创意短片还是个人Vlog,街道夜景的视频素材都能为你的作品增添不小的分量。那么,在哪里可以找到这些高质量的街道夜景短视…

实习冲刺第四十三天

25.K个一组翻转链表 给你链表的头节点 head ,每 k 个节点一组进行翻转,请你返回修改后的链表。 k 是一个正整数,它的值小于或等于链表的长度。如果节点总数不是 k 的整数倍,那么请将最后剩余的节点保持原有顺序。 你不能只是单…

[计算机网络] HTTP/HTTPS

一. HTTP/HTTPS简介 1.1 HTTP HTTP(超文本传输协议,Hypertext Transfer Protocol)是一种用于从网络传输超文本到本地浏览器的传输协议。它定义了客户端与服务器之间请求和响应的格式。HTTP 工作在 TCP/IP 模型之上,通常使用端口 …

微信创建小程序码 - 数量不受限制

获取小程序码:小程序码为圆图,且不受数量限制。 目录 文档 接口地址 请求方式 功能描述 注意事项 获取 scene 值 请求参数 返回参数 对接 请求方法 获取小程序码 调用获取小程序码 总结 文档 接口地址 https://api.weixin.qq.com/wxa/get…

在做题中学习(79):最小K个数

解法:快速选择算法 说明:堆排序也是经典解决问题的算法,但时间复杂度为:O(NlogK),K为k个元素 而将要介绍的快速选择算法的时间复杂度为: O(N) 先看我的前两篇文章,分别学习:数组分三块&#…

第427场周赛: 转换数组、用点构造面积最大的矩形 Ⅰ、长度可被 K 整除的子数组的最大元素和、用点构造面积最大的矩形 Ⅱ

Q1、转换数组 1、题目描述 给你一个整数数组 nums&#xff0c;它表示一个循环数组。请你遵循以下规则创建一个大小 相同 的新数组 result &#xff1a; 对于每个下标 i&#xff08;其中 0 < i < nums.length&#xff09;&#xff0c;独立执行以下操作&#xff1a; 如…

【中间件开发】Redis基础命令详解及概念介绍

文章目录 前言一、Redis相关命令详解及原理1.1 string、set、zset、list、hash1.1.1 string1.1.2 list1.1.3 hash1.1.4 set1.1.5 zset 1.2 分布式锁的实现1.3 lua脚本解决ACID原子性1.4 Redis事务的ACID性质分析 二、Redis协议与异步方式2.1 Redis协议解析2.1.1 redis pipeline…

运输层4——TCP格式(重点!)

目录 一、TCP报文段格式 二、最大报文长度 MSS 一、TCP报文段格式 长度&#xff1a;前20个字节固定 后4n个字节&#xff08;报文段格式不固定&#xff09; 1、源端和目的端&#xff1a;各2个字节 作用&#xff1a;指明TCP链接的发送 2、序号 4字节 作用&#xff1…