A computer implemented method, the method comprising: receiving a scan request, wherein the scan request includes a plurality of text images, each text image representing a portion of a text document, wherein the plurality of text images includes a first text image and a second text image that at least partially overlap; for each text image of the plurality of text images: rectifying the text image to generate a text image with parallel image lines, generating a plurality of word bounding boxes that enclose one or more connected components in the text image, wherein each word bounding box is associated with a respective word, and generating, for each respective word bounding box in the text image, a plurality of points that represent the respective word associated with the word bounding box, wherein each plurality of points is a word shape descriptor describing a shape of the respective word, and where each word shape descriptor comprises a vector, wherein calculating a word shape descriptor for a word bounding box comprises: tiling the word bounding box into a fixed grid of cells; and performing histogram oriented gradient over the word-bounding box to generate a vector descriptor of the shape of the word associated with the word bounding box; combining the plurality of text images to form a single text document including combining the first text image of the plurality of text images and the second text image of the plurality of text images by matching one or more shape descriptors generated for the first text image and one or more shape descriptors generated for the second text image; and providing the combined image as a scannable document. receiving a scan request, wherein the scan request includes a plurality of text images, each text image representing a portion of a text document, wherein the plurality of text images includes a first text image and a second text image that at least partially overlap; for each text image of the plurality of text images: rectifying the text image to generate a text image with parallel image lines, generating a plurality of word bounding boxes that enclose one or more connected components in the text image, wherein each word bounding box is associated with a respective word, and generating, for each respective word bounding box in the text image, a plurality of points that represent the respective word associated with the word bounding box, wherein each plurality of points is a word shape descriptor describing a shape of the respective word, and where each word shape descriptor comprises a vector, wherein calculating a word shape descriptor for a word bounding box comprises: tiling the word bounding box into a fixed grid of cells; and performing histogram oriented gradient over the word-bounding box to generate a vector descriptor of the shape of the word associated with the word bounding box; rectifying the text image to generate a text image with parallel image lines, generating a plurality of word bounding boxes that enclose one or more connected components in the text image, wherein each word bounding box is associated with a respective word, and generating, for each respective word bounding box in the text image, a plurality of points that represent the respective word associated with the word bounding box, wherein each plurality of points is a word shape descriptor describing a shape of the respective word, and where each word shape descriptor comprises a vector, wherein calculating a word shape descriptor for a word bounding box comprises: tiling the word bounding box into a fixed grid of cells; and performing histogram oriented gradient over the word-bounding box to generate a vector descriptor of the shape of the word associated with the word bounding box; tiling the word bounding box into a fixed grid of cells; and performing histogram oriented gradient over the word-bounding box to generate a vector descriptor of the shape of the word associated with the word bounding box; combining the plurality of text images to form a single text document including combining the first text image of the plurality of text images and the second text image of the plurality of text images by matching one or more shape descriptors generated for the first text image and one or more shape descriptors generated for the second text image; and providing the combined image as a scannable document.