要对页面上的元素进行分组,例如文本和图像的段落,您可以使用某些聚类算法和/或具有某些阈值的blob检测。
您可以使用Radon变换识别线条并检测扫描页面的偏斜。
我认为对于字符分离,你将不得不搞乱字体。一些多项式匹配/拟合或其他东西。 (现在这是一个非常疯狂的猜测,不要把它当回事)。
但类似的方法可以让你让角色脱离线并在同一步骤中识别它。
至于识别,一旦你有了一个角色,就会有一个很好的三角技巧,比较角色的角度和存储在数据库中的角度。
手写也很棒。
我不是页面分割如何正常工作的专家,但似乎我正在成为一个。刚刚开展一个包含它的项目。
所以给我一个月,我就能告诉你更多。 :d
无论如何,你应该去阅读Tesseract代码,看看HP和Google是如何做到的。它应该给你很好的想法。
祝好运!