超简单教程——Linux下自制OCR文字识别
参考资料
1. 主要思路
- 利用文字识别OCR软件tesseract,进行识别;
- 将识别到的结果输出,复制到文件和剪切板。
2. 安装依赖
-
安装tesseract # 添加源 sudo add-apt-repository ppa:alex-p/tesseract-ocr # 更新源 sudo apt update # 安装 sudo apt install tesseract-ocr 安装字库 tesseract支持60多种语言的识别,使用之前需要先下载对应语言的字库; 完整字库下载地址: 简中英字库下载地址: 下载完成之后把.traineddata后缀名字库文件放到tessdata目录下,默认路径是/usr/share/tesseract-ocr/4.00/tessdata 安装gnome-screenshot,xclip,imagemagick sudo apt install gnome-screenshot sudo apt install xclip sudo apt install imagemagick
3. 制作shell脚本
将以下代码复制到文档,并将后缀改成 .sh ,例如命名为ocr.sh:
#!/bin/env zsh # Dependencies: tesseract-ocr imagemagick gnome-screenshot xclip #Name: OCR Picture #Fuction: take a screenshot and OCR the letters in the picture #Path: /home/Username/... #you can only scan one character at a time SCR="/home/chh3213/The_linux_world_of_CHH/trick/OCR_create/temp/src" SCR2="/home/chh3213/The_linux_world_of_CHH/trick/OCR_create/temp/src2" # 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 # get the text and copy to clipboard #sed -i s/[[:space:]]//g $SCR.txt # 删除空格方式1 #sed -i s/ //g $SCR.txt # 删除空格方式2 cat $SCR.txt | sed -r s/([^0-9a-z])?s+([^0-9a-z])/12/ig>$SCR2.txt # 解决每个汉字之间有空格的情况,英文单词间空格依旧保留 cat $SCR2.txt | xclip -selection clipboard exit
注意:中文识别情况下,有可能每个字之间都有空格,所以我在脚本里添加了去除空格的代码。
添加运行权限
sudo chmod a+x ocr.sh
4. 设置快捷键,一键调用shell脚本
-
打开系统设置,点击键盘快捷键,右边拉到底部可看到+号,点击+号添加快捷键。 创建快捷键: 名称:自由设置,建议以shell脚本名称命名; 命令:bash 这里换成你自己shell脚本ocr.sh所在的路径;例如,我这里的bash命令为: bash /home/chh3213/The_linux_world_of_CHH/trick/OCR_create/ocr.sh
到这里,就配置完成了。直接使用快捷键即可进入截屏模式,截取想要识别的文字区域,等待片刻后便可在指定目录生成src.png和src.txt文件,同时,文字会自动复制到剪切板,可以直接粘贴使用。抓紧去试试吧!
上一篇:
IDEA上Java项目控制台中文乱码