目的
本文主要希望在ubuntu系统下实现 一键OCR识别图片截图中的内容使之转换为文本可以复制粘贴
主要思路
- 利用截图软件gnome-screenshot 进行截取需要被文字识别的图片;
- 利用文字识别OCR软件tesseract,进行识别
- 将结果输出,复制到文件和剪切板
本文附视频教程:ubuntu linux 下实现一键截屏截图OCR文字识别_哔哩哔哩 (゜-゜)つロ 干杯~-bilibili
步骤1:安装依赖软件
- 安装tesseract
tesseract是一个开源的OCR引擎,最初是由惠普公司开发用来作为其平板扫描仪的OCR引擎,2005年惠普将其开源出来,之后google接手负责维护。目前稳定的版本是3.0。4.0版本加入了基于LSTM的神经网络技术,中文字符识别准确率有所提高。
sudo add-apt-repository ppa:alex-p/tesseract-ocr
sudo apt-get install tesseract-ocr
tesseract支持60多种语言的识别不同,使用之前需要先下载对应语言的字库,下载地址:https://github.com/tesseract-ocr/tessdata
下载速度慢的朋友可以从我分享的云盘下载(仅有简体中英文字库):https://share.weiyun.com/5IJtlcY
下载完成之后把.traineddata字库文件放到tessdata目录下,默认路径是/usr/share/tesseract-ocr/4.00/tessdata
- 安装gnome-screenshot,xclip, imagemagick
这3个不需要添加源,直接终端输入代码:
sudo apt-get install gnome-screenshot
sudo apt-get install xclip
sudo apt-get install imagemagick
步骤2:制作shell脚本
将以下代码复制到文档,并将后缀改成.sh 并增加运行权限 sudo chmod a+x *.sh
注意:将代码中,SCR="/home/Username/Documents/temp"双引号中的路径替换成你想要存放截图以及识别结果txt文档的路径
————————————————————————
2020年4月24更新
1.添加处理OCR识别结果中过多的空格及换行,感谢云之巅`的提议
具体做法是,利用sed来删除多余的空格,用xargs删除换行符
sed 's/ //g' 第一个斜杠和第二个斜杠之间的一个空格 替换成 第二个斜杠和第三个斜杠之间的nothing.
2. 添加OCR处理之后的弹窗提示,感谢陈留阳的代码
————————————————————————
#!/bin/env bash
# Dependencies: tesseract-ocr imagemagick gnome-screenshot xclip#Name: OCR Picture
#Author:andrew
#Fuction: take a screenshot and OCR the letters in the picture
#Path: /home/Username/...
#Date: 2020-02-10#you can only scan one character at a time
SCR="/home/Username/Documents/temp"####take a shot what you wana to OCR to text
gnome-screenshot -a -f $SCR.png####increase the png
mogrify -modulate 100,0 -resize 400% $SCR.png
#should increase detection rate####OCR by tesseract
tesseract $SCR.png $SCR &> /dev/null -l eng+chi1####use sed to delete the blanks & get the text and copy to clipboard
cat $SCR.txt | sed 's/ //g' | xclip -selection clipboard#需要删除换行请使用此语句 并注释上一句(行首加#)
#cat $SCR.txt | sed 's/ //g'| xargs | xclip -selection clipboard#弹窗提示OCR结束 the code below Thanks to 陈留阳
notify-send "OCR Done"exit
步骤3:设置快捷键,一键调用shell脚本
进入:设置→键盘 拉到底部,点击+
名称:自由设置,建议以shell脚本名称命名
命令:bash 这里换成你自己shell脚本所在的路径/OCR.sh
注意bash后面有一个空格
这样设置好后,按下设置的快捷键,即可一键OCR识别图片截图转换为文本
附:ubuntu下实现一键截图视频教程-像windows中一样方便
ubuntu linux神级一键截图软件flameshot_哔哩哔哩 (゜-゜)つロ 干杯~-bilibili