Table of Contents
ssocr - optical recognition of seven segment displays
[OPTION]... [COMMAND]... IMAGE
ssocr reads an image file containing
the picture of a seven segment display, recognizes the displayed digits
and prints them to standard output. All image formats known by imlib2 are
supported. Use - as file name to read the image from standard input. ssocr
provides several image manipulation algorithms to enhance noisy images.
Write a help message to standard output. The default settings
are shown as well.
Write version information to standard output.
Print information about program execution to standard error.
Specify a percentage value as luminance threshold to
differentiate between black and white. This threshold is adjusted to the
luminance values occurring in the image, unless option --absolute-threshold
is used. The default threshold is 50.
Do not adjust the
threshold to the luminance values occuring in the image. Consider this option
when using the dynamic_threshold command.
Use an iterative
method (one-dimensional k-means clustering) to determine the threshold. The
starting value can be specified with the --threshold option.
Set the number of foreground pixels that have to be found in a scanline
to recognize a segment. Can be used to ignore some noise in the picture.
See the web page of ssocr(1) for a description of the algorithm.
Set the number of foreground pixels that are ignored when deciding
if a column consists only of background or foreground pixels. Can be used
to ignore some noise in the picture. See the web page of ssocr(1) for a
description of the algorithm.
Specifies the number
of digits shown in the image. Default value is 6. Use -1 to automatically
detect the number of digits.
Set the height/width ratio
threshold to recognize a digit as a one. RATIO takes integers only. See the
web page of ssocr(1) for a description of the algorithm.
the width/height ratio to recognize a minus sign. This uses the same idea
as recognizing the digit one.
Write the processed image
to FILE. Use - to write to standard output. Unless this option is used no
image is written to disk. If a standard filename extension is used it is
interpreted as the image format to use. Can be useful together with the
Specify the image format to use
with --output-image. This format must be recognized by imlib2. Standard filename
extensions are used to describe the format. Overwrites the image file format
automatically determined via the filename. If no format is specified via
this option or the filename, png is used.
Use ssocr(1) as
an image manipulation program. No image recognition is performed. Should
be used together with the -B --output-image option.
a debug image showing the results of thresholding, segmentation and character
recognition to disk. The image is written to the file testbild.png unless
a filename FILE is given.
Print information helpful for debugging
to standard error.
Specify the foreground color (either
black or white). This automatically sets the background color as well. Default
Specify the background color (either black
or white). This automatically sets the foreground color as well. Default
Prints image dimensions and range of used luminance
values to standard error.
Interpret the values T1 and T2 given
to the command gray_stretch as percentages instead of absolut luminance
Choose the type of luminace computation. Using
help as KEYWORD prints the list of implemented luminance keywords with
a short description of the used formula. The default of Rec709 should work
well in most cases.
Prints the recognized segments, i.e.
the display as seen by ssocr, as ASCII art to standard error.
the recognized segments as a string of hexadecimal numbers separated by
a colon instead of digits and characters. Each number comprises two hexadecimal
digits (one byte). 0x01 represents the upper horizontal segment, 0x02 represents
the upper left vertical segment, 0x04 represents the upper right vertical
segment, 0x08 represents the middle horizontal segment, 0x10 represents
the lower left vertical segment, 0x20 represents the lower right vertical
segment, 0x40 represents the lower horizontal segment, 0x80 represents
a decimal point (or comma or thousands separator). Each hexadecimal number
printed is the logical or of the set segments.
points from output. Decimal points are still recognized and counted against
the number of digits. This can be used together with automatically detecting
the number of digits to ignore isolated groups of pixels in an image.
Select the set of characters that ssocr shall recognize.
This affects if a display showing a six with missing top segment is recognized
as 6 (with digits and decimal) or b (with hexadecimal and full). Using help
as KEYWORD prints the list of implemented character set keywords with a
short description of the included characters. The default is full (recognizing
all characters known to ssocr in the image).
image using dilation algorithm. Any pixel with at least one neighbour pixel
set in the source image will be set in the filtered image. If a number N
> 1 is specified, the dilation algorithm is executed N times.
image using erosion algorithm. Any pixel with every neighbour pixel set
in the source image will be set in the filtered image. If a number N > 1
is specified, the erosion algorithm is executed N times.
image using closing algorithm, i.e. erosion and then dilation. If a number
N > 1 is specified, N times dilation and then N times erosion is executed.
Filter image using opening algorithm, i.e. dilation and then erosion.
If a number N > 1 is specified, N times dilation and then N times erosion
Remove any foreground pixels without neighbouring
Convert the image to monochrome using thresholding.
The threshold can be specified with option --threshold and is adjusted to
the used luminance interval of the image unless option --absolute-threshold
Transform image to gray values using luminance. The formula
to compute luminance can be specified using option --luminance.
every foreground pixel to background color and vice versa.
Transform image so that the luminance interval [ T1,T2 ] is projected
to [ 0,255 ] with any value below T1 set to 0 and any value above T2 set
to 255. Together with the option --adjust-gray, the values T1 and T2 are interpreted
Convert the image to monochrome using
dynamic thresholding a.k.a local adaptive thresholding. A window of width
W and height H around the current pixel is used to determine the (local)
thresholding value. Consider using the --absolute-threshold option together
with a manually adjusted --threshold for predictable results.
the image to monochrome using simple thresholding for every color channel.
This is the same as --luminance=minimum make_mono. You should use --luminance=minimum
and make_mono or dynamic_threshold instead.
Convert the image
to monochrome using simple thresholding. Only the red color channel is used.
This is the same as --luminance=red make_mono. You should use --luminance red
and make_mono or dynamic_threshold instead.
Convert the image
to monochrome using simple thresholding. Only the green color channel is
used. This is the same as --luminance=green make_mono. You should use --luminance
green and make_mono or dynamic_threshold instead.
image to monochrome using simple thresholding. Only the blue color channel
is used. This is the same as --luminance=blue make_mono. You should use --luminance
blue and make_mono or dynamic_threshold instead.
border of the image is set to the foreground color. This border is one pixel
wide unless a WIDTH > 1 is specified.
Shear the image OFFSET
pixels to the right. The OFFSET is used at the bottom. Image dimensions do
not change, pixels in background color are used for pixels that are outside
the image and shifted inside. Pixels shifted out of the image are dropped.
Many seven segment displays use slightly skewed digits, this command can
be used to compensate this.
Rotate the image THETA degrees clockwise
around the center of the image. Image dimensions do not change, pixels rotated
out of the image area are dropped, pixels from outside the image rotated
into the new image are set to the background color.
Mirror the image horizontally or vertically.
Use only the subpicture
with upper left corner ( X,Y ), width W and height H.
Set every pixel in the filtered image that has at least MASK neighbour
pixels set in the source image.
Keep only those foreground
pixels in the filtered image that have at least MASK neighbour pixels set
in the source image (not counting the checked pixel itself).
TMP can be used to specify a different directory
for temporary files than /tmp.
Imlib2 (and therefore ssocr(1)) does
not work well with Netpbm(1) images.
ssocr was written by Erik Auerswald
- 0, if the correct number of digits have been
- 1, if an incorrect number of digits have been found
- 2, if not
all digits have been recognized
- 3, if only image processing was requested
- 42, if help or version info was requested
- 99, if some other
Table of Contents
- -h, --help
- -V, --version
- -v, --verbose
- -t, --threshold THRESHOLD
- -a, --absolute-threshold
- -T, --iter-threshold
- -n, --number-pixels NUMBER
- -i, --ignore-pixels NUMBER
- -d, --number-digits NUMBER
- -r, --one-ratio RATIO
- -m, --minus-ratio RATIO
- -o, --output-image FILE
- -O, --output-format FORMAT
- -p, --process-only
- -D, --debug-image[=FILE]
- -P, --debug-output
- -f, --foreground COLOR
- -b, --background COLOR
- -I, --print-info
- -g, --adjust-gray
- -l, --luminance KEYWORD
- -S, --ascii-art-segments
- -X, --print-as-hex
- -C, --omit-decimal-point
- -c, --charset KEYWORD
- Luminance Keywords
- Character Set Keywords
- Exit Status
- See Also