之所以会用到OCR工具,是因为在看一些扫描版的PDF文档时,有时候需要复制粘贴一些文字,特别是技术性文档,对于一些命令或者代码片段需要复制出来执行验证。

网络上有许多推荐OCR工具的文章,但是大多数都是厂商软文,而且都需要付费。本人在经过实际使用之后认为有2款开源免费的工具非常不错,推荐给大家。

特别说明: 既然是开源免费的工具,在识别准确率上应该是不如商业软件的,如果介意的就不用看了。

ShareX

ShareX是一个瑞士军刀般的小工具,之前主力使用的功能是屏幕截图。

其实它一直有一个OCR功能对于文本识别的正确率也非常高,对于不愿意折腾的人来说使用它进行OCR识别就足够了。

关于安装非常简单,不再赘述。

在最新版的ShareX 15.0版本中,使用其OCR功能截图下:

实际使用示例如下图:

对于我自己的需求而言,这样的识别准确率已经足够了。

textshot

textshot也是一个开源的OCR工具,工具本身是基于Python写的,所以需要机器上安装有Python3环境。

关于Python的下载和安装详见这里,不再赘述。

安装好Python3语言环境之后,使用pip3命令安装textshot。

pip3 install textshot

安装好textshot之后还不能直接使用(在Windows控制台执行textshot命令不会有任何效果),因为它依赖tesseract,所以还需要继续下载并安装Tesseract,这个安装过程有点漫长,需要耐心等待。

安装完毕tesseract之后,需要将其安装路径添加到环境变量PATH中。

上述准备工作都结束之后,打开一个新的Windows控制台,输入textshot命令,鼠标就会变成十字形,此时就可以开始截图并识别文本了,按Esc键可以退出。

实际使用示例如下图:

这种需要打开Windows控制台再输入命令启动textshot的方式非常不友好,所以可以借助AutoHotkey来设置快捷键。

使用AutoHotkey设置快捷键需要编写脚本,关于启动textshot的脚本在其代码库中有一个现成的示例:textshot.ahk,其内容如下:

#NoEnv
SetWorkingDir %A_ScriptDir% ; Bind the script to Win + Ctrl + S; modify as needed
#^s::
; Run Python w/o a window in a virtual environment in .venv
; Modify the command as needed, e.g. if not using a virtual environment
Run, .\.venv\Scripts\textshotw.exe
Return

我这边根据自己的实际环境情况做了一个修改,内容修改为:

#NoEnv
SetWorkingDir %A_ScriptDir% ; Bind the script to Win + Ctrl + S; modify as needed
#^s::
; Run Python w/o a window in a virtual environment in .venv
; Modify the command as needed, e.g. if not using a virtual environment
Run, textshot
Return

脚本内容含义解读:

  • #^s::,设置快捷键为Ctrl+Win+S
  • Run, textshot,执行textshot命令

然后将textshot.ahk的默认打开方式修改为AutoHotkeyU64.exe

经过上述设置之后,只需要按快捷键Ctrl+Win+S就可以开始textshot截图了。

但是在我使用这种通过快捷键打开textshot的方式时,会弹出一个Windows控制台窗口,有时候这个窗口会遮盖我需要截图的区域,有一些不方便。

解决办法:在这个窗口弹出来,鼠标指针未变成十字形之前,把窗口拖到一边,这样就不再有任何影响了。

【参考】

https://zhuanlan.zhihu.com/p/35379309 Windows 自动化效率神器:AutoHotkey 使用教程和脚本推荐

http://www.cleartechfei.com/2021/03/ahk脚本-基本用法/ AHK脚本-基本用法

好用的OCR文本识别工具的更多相关文章

  1. 个人永久性免费-Excel催化剂功能第86波-人工智能之图像OCR文本识别全覆盖

    在上一年中,Excel催化剂已经送上一波人工智能系列功能,鉴于部分高端用户的需求,再次给予实现了复杂的图像OCR识别,包含几乎所有日常场景,让公司个人手头的图像非结构化数据瞬间变为可进行结构化处理分析 ...

  2. 用OCR文字识别工具来审阅和处理PDF内容

    "工作的时候要同时打开好几个软件真的是太不方便了."很多公司白领都有这样的困扰.他们抱怨着进行文字识别过后又要打开文档编辑器来进行编辑.PDF是办公文档常用的格式, ABBYY F ...

  3. OCR文字识别软件 怎么识别包含非常规符号的文本

    ABBYY FineReader 12 是一款OCR图文识别软件,可快速方便地将扫描纸质文档.PDF文件和数码相机的图像转换成可编辑.可搜索的文本,有时文本中可能会包含一些非常规的符号,此时ABBYY ...

  4. Android OCR文字识别 实时扫描手机号(极速扫描单行文本方案)

    身份证识别:https://github.com/wenchaosong/OCR_identify 遇到一个需求,要用手机扫描纸质面单,获取面单上的手机号,最后决定用tesseract这个开源OCR库 ...

  5. 用深度学习做命名实体识别(二):文本标注工具brat

    本篇文章,将带你一步步的安装文本标注工具brat. brat是一个文本标注工具,可以标注实体,事件.关系.属性等,只支持在linux下安装,其使用需要webserver,官方给出的教程使用的是Apac ...

  6. OCR场景文本识别:文字检测+文字识别

    一. 应用背景 OCR(Optical Character Recognition)文字识别技术的应用领域主要包括:证件识别.车牌识别.智慧医疗.pdf文档转换为Word.拍照识别.截图识别.网络图片 ...

  7. CVPR2020论文解读:OCR场景文本识别

    CVPR2020论文解读:OCR场景文本识别 ABCNet:  Real-time Scene Text Spotting with Adaptive Bezier-Curve Network∗ 论文 ...

  8. 如何用OCR图文识别软件在文档里复制内容

    ABBYY FineReader 12是一款OCR图文识别软件,可从文档中复制文本.图片和表格,粘贴到其他应用程序中.无需识别整个文档(关于ABBYY FineReader识别文档的文章,请参考解析A ...

  9. OCR文字识别软件许可文件被误删了怎么办

    使用任何一款软件,都会有误操作的情况发生,比如清理文件时一不小心删除了许可文件,对于ABBYY FineReader 12这样一款OCR文字识别软件,因失误错误删除了许可文件该怎么办呢?今天就来给大家 ...

  10. 6 个优秀的开源 OCR 光学字符识别工具

    转自:http://sigvc.org/bbs/thread-870-1-1.html 纸张在许多地方已日益失宠,无纸化办公谈论40多年,办公环境正限制纸山的生成.而过去几年,无纸化办公的概念发生了显 ...

随机推荐

  1. TiKV占用内存超过的解决过程

    TiKV占用内存超过的解决过程 背景 为了后去TiDB的极限数据. 晚上在每台服务器上面增加了多个TiKV的节点. 主要方式为: 每个NVME的硬盘增加两个TiKV的进程. 这样每个服务器两个磁盘, ...

  2. [转帖]Intel固态硬盘总结

    https://www.cnblogs.com/hongdada/p/17326247.html 2012年推出的S3700,采用的是25nm闪存颗粒. 2015年推出s3710,采用的是20nm闪存 ...

  3. [转贴]BLOCKED,WAITING,TIMED_WAITING有什么区别?-用生活的例子解释

    BLOCKED,WAITING,TIMED_WAITING有什么区别?-用生活的例子解释 https://www.jianshu.com/p/0976b2f23db1 https://dzone.co ...

  4. 一个PCI-E的硬盘参数

    看了下 HDD 随机 IOPS 在 100-200 之间 (读写) SATA的 SSD 随机IOPS 在 读 100k 写 20k 左右U.2的SSD 的随机IOPS 在 读 500k 写 50k 左 ...

  5. React中Props的详细使用和props的校验

    props中的children属性 组件标签只用有子节点的时候,props就会有该属性; children的属性跟props一样的,值可以是任意值;(文本,React元素,组件,函数) 组件: < ...

  6. Vue双向数据绑定原理-下

    Vue双向数据绑定原理-下这一篇文章主要讲解Vue双向数据绑定的原理,主要是通过Object.defineProperty()来实现的,这里我们手写Vue双向数据绑定的原理. 首先我提出一个需求,我的 ...

  7. Spring WebSocket实现实时通信的详细教程

    简介 WebSocket 是基于TCP/IP协议,独立于HTTP协议的通信协议.WebSocket 连接允许客户端和服务器之间的全双工通信,以便任何一方都可以通过已建立的连接将数据推送到另一方. 我们 ...

  8. python快速入门【三】-----For 循环、While 循环

    python入门合集: python快速入门[一]-----基础语法 python快速入门[二]----常见的数据结构 python快速入门[三]-----For 循环.While 循环 python ...

  9. 1.基于Label studio的训练数据标注指南:信息抽取(实体关系抽取)、文本分类等

    文本抽取任务Label Studio使用指南 1.基于Label studio的训练数据标注指南:信息抽取(实体关系抽取).文本分类等 2.基于Label studio的训练数据标注指南:(智能文档) ...

  10. Rsync+Inotify 实现数据同步

    Rsync 是UNIX及类UNIX-Like平台下一款强大的数据镜像备份软件,它不像FTP或其他文件传输服务那样需要进行全备份,Rsync 可以根据数据的变化进行差异备份,从而减少数据流量,提高工作效 ...