An apparatus that generates characters or glyphs from a bitmap of text, comprising: an input component for receiving a bitmap of an image comprising at least one textual line that is identified by a base-line and a mean-line that have been calculated in a prior component, wherein the base-line is defined as a horizontal line passing through bottom ends of a majority of characters or glyphs in the textual line, and the mean-line is defined as a horizontal line passing through top ends of a majority of the characters or glyphs in the textual line; a character chopper component that includes a candidate chop line generator component for generating a plurality of chop lines that each separate a pair of adjacent characters or glyphs in the textual line, wherein the candidate chop line generator component is configured to produce a candidate chop line of an initial set of candidate chop lines through each pixel in at least one row extending along and within the textual line, wherein each of the pixels in the at least one row serves as an anchor point for its respective candidate chop line in the initial set of candidate chop lines, and wherein for each pixel in the at least one row the candidate chop line generator component produces a vertically oriented candidate chop line of the initial set of candidate chop lines by selecting one and only one pixel from each row of the bitmap above and below the pixel on the at least one row, said character chopper component further including a chop line selection component for selecting a subset of the candidate chop lines of the initial set of candidate chop lines that correspond to the plurality of chop lines that each separate a pair of adjacent characters or glyphs in the textual line; and an output component that applies the chop line to the textual line to produce the characters or glyphs, characterized in that the candidate chop line generator component generates candidate chop lines of the initial set of candidate chop lines that each maximize a fitness function that increases as a total path lightness of the respective candidate chop lines increases and decreases as an intersection number increases, wherein the intersection number denotes a number of white-to-black and black-to-white transitions that the respective candidate chop line crosses, and wherein the at least one row is a central row halfway between the base-line and the mean-line of the textual line and the character chopper component is configured to separately produce candidate chop half-lines above and below the central row which are subsequently joined together. an input component for receiving a bitmap of an image comprising at least one textual line that is identified by a base-line and a mean-line that have been calculated in a prior component, wherein the base-line is defined as a horizontal line passing through bottom ends of a majority of characters or glyphs in the textual line, and the mean-line is defined as a horizontal line passing through top ends of a majority of the characters or glyphs in the textual line; a character chopper component that includes a candidate chop line generator component for generating a plurality of chop lines that each separate a pair of adjacent characters or glyphs in the textual line, wherein the candidate chop line generator component is configured to produce a candidate chop line of an initial set of candidate chop lines through each pixel in at least one row extending along and within the textual line, wherein each of the pixels in the at least one row serves as an anchor point for its respective candidate chop line in the initial set of candidate chop lines, and wherein for each pixel in the at least one row the candidate chop line generator component produces a vertically oriented candidate chop line of the initial set of candidate chop lines by selecting one and only one pixel from each row of the bitmap above and below the pixel on the at least one row, said character chopper component further including a chop line selection component for selecting a subset of the candidate chop lines of the initial set of candidate chop lines that correspond to the plurality of chop lines that each separate a pair of adjacent characters or glyphs in the textual line; and an output component that applies the chop line to the textual line to produce the characters or glyphs, characterized in that the candidate chop line generator component generates candidate chop lines of the initial set of candidate chop lines that each maximize a fitness function that increases as a total path lightness of the respective candidate chop lines increases and decreases as an intersection number increases, wherein the intersection number denotes a number of white-to-black and black-to-white transitions that the respective candidate chop line crosses, and wherein the at least one row is a central row halfway between the base-line and the mean-line of the textual line and the character chopper component is configured to separately produce candidate chop half-lines above and below the central row which are subsequently joined together.