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. This debug image often helps in understanding
why ssocr(1) does not recognize the number from a given image.
information helpful for debugging to standard error.
the foreground color (either black or white). This automatically sets the
background color as well. Default is black.
background color (either black or white). This automatically sets the foreground
color as well. Default is white.
Prints image dimensions and
range of used luminance values to standard error.
the values T1 and T2 given to the command gray_stretch as percentages instead
of absolut luminance values.
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.
Prints 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.
Omit decimal 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).
Filter 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. Sometimes ssocr(1) cannot separate a decimal
point from the preceding digit without shearing the image.
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
Mirror the image horizontally or
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
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 <firstname.lastname@example.org>.
- 0, if the correct number of digits have been recognized
- 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 and successful
- 42, if help or version info was requested
- 99, if some other error occured
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