A method of generating fine-grain fingerprints for identifying content in a rendered document, the method comprising: applying image-based techniques, by an electronic processor, to identify patterns in a document rendered by an electronic document rendering system, irrespective of a file format in which the rendered document was electronically created, the applying of the image-based techniques including, i. identifying candidate keypoints at locations in a local image neighborhood of the document, by scanning the rendered document page one scanline at a time; examining, for each scanline, image pixels of the document; determining at each current pixel location if the current pixel is a member of a new or previously existing local image neighborhood based on the pixel value of the current pixel and the pixel values of the neighboring pixels: if the current pixel is a member of a new local image neighborhood, assigning a candidate keypoint to the current pixel location; if the current pixel is a member of a previously existing local image neighborhood, determining whether to move a candidate keypoint associated with that previously existing local image neighborhood to the current pixel location; after each scanline has been examined, outputting the candidate keypoints for any local image neighborhood that did not increase in size relative to the previous scanline to a candidate keypoint file; and ii. combining the locations of the candidate keypoints from the candidate keypoint file to form fine-grain fingerprints identifying patterns representing content in the document. applying image-based techniques, by an electronic processor, to identify patterns in a document rendered by an electronic document rendering system, irrespective of a file format in which the rendered document was electronically created, the applying of the image-based techniques including, i. identifying candidate keypoints at locations in a local image neighborhood of the document, by scanning the rendered document page one scanline at a time; examining, for each scanline, image pixels of the document; determining at each current pixel location if the current pixel is a member of a new or previously existing local image neighborhood based on the pixel value of the current pixel and the pixel values of the neighboring pixels: if the current pixel is a member of a new local image neighborhood, assigning a candidate keypoint to the current pixel location; if the current pixel is a member of a previously existing local image neighborhood, determining whether to move a candidate keypoint associated with that previously existing local image neighborhood to the current pixel location; after each scanline has been examined, outputting the candidate keypoints for any local image neighborhood that did not increase in size relative to the previous scanline to a candidate keypoint file; and ii. combining the locations of the candidate keypoints from the candidate keypoint file to form fine-grain fingerprints identifying patterns representing content in the document. i. identifying candidate keypoints at locations in a local image neighborhood of the document, by scanning the rendered document page one scanline at a time; examining, for each scanline, image pixels of the document; determining at each current pixel location if the current pixel is a member of a new or previously existing local image neighborhood based on the pixel value of the current pixel and the pixel values of the neighboring pixels: if the current pixel is a member of a new local image neighborhood, assigning a candidate keypoint to the current pixel location; if the current pixel is a member of a previously existing local image neighborhood, determining whether to move a candidate keypoint associated with that previously existing local image neighborhood to the current pixel location; after each scanline has been examined, outputting the candidate keypoints for any local image neighborhood that did not increase in size relative to the previous scanline to a candidate keypoint file; and if the current pixel is a member of a new local image neighborhood, assigning a candidate keypoint to the current pixel location; if the current pixel is a member of a previously existing local image neighborhood, determining whether to move a candidate keypoint associated with that previously existing local image neighborhood to the current pixel location; after each scanline has been examined, outputting the candidate keypoints for any local image neighborhood that did not increase in size relative to the previous scanline to a candidate keypoint file; and ii. combining the locations of the candidate keypoints from the candidate keypoint file to form fine-grain fingerprints identifying patterns representing content in the document.