超简单教程——Linux下自制OCR文字识别

文章目录

  • 参考资料
  • 1. 主要思路
  • 2. 安装依赖
  • 3. 制作shell脚本
  • 4. 设置快捷键,一键调用shell脚本

参考资料

  1. https://www.bilibili.com/video/av90573946/
  2. https://blog.csdn.net/jia12216/article/details/55222907

1. 主要思路

  1. 利用截图软件 gnome-screenshot 进行截取需要被文字识别的图片;
  2. 利用文字识别OCR软件tesseract,进行识别;
  3. 将识别到的结果输出,复制到文件和剪切板。

2. 安装依赖

  • 安装tesseract

    # 添加源
    sudo add-apt-repository ppa:alex-p/tesseract-ocr
    # 更新源 
    sudo apt update 
    # 安装
    sudo apt 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
    超简单教程——Linux下自制OCR文字识别_第1张图片

  • 安装gnome-screenshot,xclip,imagemagick

    sudo apt install gnome-screenshot
    sudo apt install xclip
    sudo apt install imagemagick
    

3. 制作shell脚本

将以下代码复制到文档,并将后缀改成 .sh ,例如命名为ocr.sh

注意:将变量SCR路径部分替换成你想要存放截图以及识别结果txt文档的路径;

#!/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])/\1\2/ig'>$SCR2.txt  # 解决每个汉字之间有空格的情况,英文单词间空格依旧保留
cat $SCR2.txt | xclip -selection clipboard
exit

注意:中文识别情况下,有可能每个字之间都有空格,所以我在脚本里添加了去除空格的代码。

添加运行权限

sudo chmod a+x ocr.sh

4. 设置快捷键,一键调用shell脚本

  • 打开系统设置,点击键盘快捷键,右边拉到底部可看到+号,点击+号添加快捷键。
    超简单教程——Linux下自制OCR文字识别_第2张图片

  • 创建快捷键:

    • 名称:自由设置,建议以shell脚本名称命名;

    • 命令:bash 这里换成你自己shell脚本ocr.sh所在的路径;例如,我这里的bash命令为:

      bash /home/chh3213/The_linux_world_of_CHH/trick/OCR_create/ocr.sh
      

    超简单教程——Linux下自制OCR文字识别_第3张图片

到这里,就配置完成了。直接使用快捷键即可进入截屏模式,截取想要识别的文字区域,等待片刻后便可在指定目录生成src.png和src.txt文件,同时,文字会自动复制到剪切板,可以直接粘贴使用。抓紧去试试吧!

你可能感兴趣的:(Ubuntu,实用命令与技巧,ocr,linux)