14. The non-transient computer readable medium of claim 12 , determining whether a current text block corresponds to the existing semantic block comprising: determining whether the current text run is separated by a horizontal or vertical line from the current semantic block; determining whether the current text run has a font height within a desired variation from the font height of the current semantic block, if the current text run is not separated by a horizontal or vertical line from a current semantic block; determining whether a bounding rectangle of the current text run intersects a bounding rectangle of the current semantic block, if the current text run has a font height within a desired variation from the font height of the current semantic block; determining whether the current text run starts on a same horizontal location of the current semantic block and comprises a width smaller than a gap on a last line of the current semantic block, if the bounding rectangle of the current text run intersects the bounding rectangle of the current semantic block; determining whether a transformation matrix applicable to the current text run is also applicable to the current semantic block, if the current text run does not start on the same horizontal location of the current semantic block and does not comprises a width smaller than the gap on the last line of the current semantic block; and placing the current text run in the semantic block container corresponding to the current semantic block, if a transformation matrix that is applicable to the current text run is also applicable to the current semantic block.
12. A non-transient computer-readable storage medium having computer-executable instructions, for generating a logically structured document from an unstructured document, that when executed on a computer via a microprocessor perform a method comprising: obtaining text runs from an unstructured markup language representation of a document, comprising a paper specification format, where the text runs comprise one or more representations of markup language glyphs; constructing semantic block containers by determining which text runs correspond to same semantic blocks and placing those text runs corresponding to the same semantic block into the same semantic block container; ordering the text runs within respective semantic blocks to match a logical order present in the document; and ordering the semantic blocks to match a logical order present in the document to generate a structured markup language representation of the document, comprising selectable text.