个性化阅读
专注于IT技术分析

在Ubuntu 16.04中如何使用ssocr(七段光学字符识别)识别七段显示内容

本文概述

7段显示器(七段显示器)由以矩形排列的七个LED组成。七个LED的每一个都称为一个段, 因为在点亮时, 该段形成了要显示的数字(十进制和十六进制)的一部分。有时在同一包装内使用另一个第8个LED, 因此当两个或更多的7段显示器连接在一起以显示大于十的数字时, 可以指示小数点(DP)。在某些应用程序中, 你将需要使用OCR来自动识别该数字, 但是, 由于你可能知道使用常规OCR算法或tesseract之类的工具识别本文所显示的此类字符, 因此你将无法正确识别数字:

传统OCR的七段显示识别

如你所见, 可怜的是, 识别的字符被错误地识别。在识别数字期间, 所有常规算法都会失败, 但是, 有一种简便的方法可以使用另一种工具来识别此类数字。我们正在谈论SSOCR, 这是一个微型程序, 可让你识别七段显示器的数字。在本文中, 我们将教你如何轻松地在Ubuntu 16.04服务器中正确安装此应用程序以及如何使用它。

1.安装所需的构建工具

为了从源代码构建ssocr, 你将需要系统中的xlib(libx11)库以及libimlib2(用于图像加载, 渲染, 保存图像的库)的某些功能。你可以使用以下命令轻松安装它们:

sudo apt-get update
sudo apt-get install libx11-dev
sudo apt-get install libimlib2-dev

安装后, 你可以继续构建ssocr库, 而不会出现任何问题。

2.克隆ssocr源代码并构建

继续使用git在系统的某些目录中下载库的源代码:

git clone https://github.com/auerswal/ssocr.git

这将创建带有源代码的ssocr目录, 然后切换到cli中的目录:

cd ssocr

最后, 使用make命令开始构建库:

make

使用make命令启动ssocr的构建后, 你将在cli中获得简短的输出:

从cli构建SSOCR

二进制ssocr将位于你运行命令的目录中。现在可以从目录中使用该工具, 但是你需要在系统上全局公开它, 并使用以下命令将二进制文件复制到本地bin路径:

sudo mv ./ssocr /usr/local/bin/ssocr

这将允许你从cli中的任何位置执行ssocr命令, 例如打印版本:

ssocr --version

七段光学字符识别库的当前版本为2.19.0, 由Erik Auerswald开发。该程序绝对没有担保, 欢迎你根据GNU GPL(版本3或更高版本)的条款重新分发它。有关此工具的更多信息, 请访问Github上的官方存储库或官方网站。

3.使用ssocr

有趣的来了 ! ssocr将允许你从任何图像中识别七段显示器的编号, 并在运行该工具时将其路径作为参数:

ssocr -t image.png

ssocr会像其他任何CLI工具一样在输出中输出识别出的数字作为响应, 因此你可以将此工具与使用任何编程语言的其他应用程序结合使用。该工具非常灵活, 因为你可以在命令中设置很多选项:

  • -h, –help:打印使用情况消息, 显示默认值, 描述程序操作并显示可能的退出代码。
  • -v, –verbose:打印一些有关程序执行的消息。
  • -V, –version:打印版本和版权信息。
  • -t, –threshold = THRESHOLD:设置用于区分黑色和白色的亮度阈值。阈值被解释为百分比。
  • -a, –absolute-threshold:使用THRESHOLD值而不进行调整。否则, 将”阈值”调整为图像中使用的亮度间隔。
  • -T, -iter-threshold:使用迭代方法(一维k均值聚类)来确定用于区分黑色和白色的阈值。通过给出的阈值
  • -t THRESHOLD:设置起始值。
  • -n, –number-pixels = NUM​​BER:设置必须在扫描线中找到才能识别段的前景像素数。可用于忽略图片中的一些噪点。
  • -i, –ignore-pixels = NUM​​BER:设置在确定列是否仅由背景或前景像素组成时忽略的前景像素数。可用于忽略图片中的一些噪点。
  • -d, –number-digits = NUM​​BER:指定图像中显示的位数。如果NUMBER为-1, 则会自动检测到位数。
  • -r, -one-ratio = RATIO:设置高度/宽度比阈值以将数字识别为1。 RATIO仅采用整数。
  • -m, –minus-ratio = RATIO:设置宽度/高度比以识别减号。 RATIO仅采用整数。
  • -o, –output-image = FILE:将处理后的图像写入FILE。通常, 没有映像写入磁盘。如果使用标准扩展名, 则将其解释为要使用的图像格式。
  • -O, –output-format = FORMAT:指定图像格式。 Imlib2必须识别此格式, 使用标准文件扩展名。
  • -p, –process-only:仅处理给定的命令, 不进行分段或字符识别。应与–output-image = FILE一起使用。
  • -D, –debug-image [= FILE]:编写一个调试图像, 显示阈值化, 分段和字符识别的结果。除非给出文件名FILE, 否则将图像写入testbild.png。
  • -P, –debug-output:打印有助于调试的信息。
  • -f, –foreground = COLOR:指定前景色(黑色或白色)。这也会自动设置背景颜色。
  • -b, –background = COLOR:指定背景颜色(黑色或白色)。这也会自动设置前景色。
  • -I, –print-info:将图像尺寸和使用的亮度值范围打印到stderr。
  • -g, –adjust-gray:使用给命令gray_stretch赋予的值T1和T2作为百分比, 而不是绝对的亮度值。
  • -l, –luminance =关键字:控制亮度计算的类型。将help用作KEYWORD会显示带有所用公式的简短描述的关键字列表。默认值应该工作良好。
  • -S, –ascii-art-segments:将识别的段以ASCII字体打印到stderr。
  • -X, –print-as-hex:更改输出格式, 以使用由冒号分隔的十六进制字符串。十六进制数字代表显示的设置段。可以将其与外部程序结合使用, 以对设置的段使用不同的解释(例如, 如果仅显示某些特定的数字/字符或什至单词, 则使用不同的显示字体或纠错)。有关值的信息, 请参见手册页。
  • -C, –omit-decimal-point:从输出中省略小数点。小数点仍然可以识别, 并根据位数进行计数。
  • -c, –charset = KEYWORD:选择ssocr应该识别的字符集。将help用作KEYWORD会打印关键字列表, 其中包含所含字符的简短说明。

CLI工具的退出代码可以参考:

  • 0:是否识别出正确的数字
  • 1:如果找到了不同的数字
  • 2:如果无法识别其中一个数字
  • 3:如果仅成功处理图像
  • 42:如果-h, -V或-l帮助
  • 99:否则

编码愉快!

赞(0)
未经允许不得转载:srcmini » 在Ubuntu 16.04中如何使用ssocr(七段光学字符识别)识别七段显示内容

评论 抢沙发

评论前必须登录!