从基于矢量的字体重建字符

时间:2012-04-03 10:27:32

标签: fonts vector-graphics

我有一系列ex-PDF文档(科学/技术),字符编码为矢量图形而不是字体系列。如何使用开源解决方案将矢量流转换为字符?

我很高兴任何有关成功解决方案的说法。这些可能包括:

  • 机器学习发现原始字体系列
  • 将流写入画布并使用OCR
  • 基于笔画重建字符的启发式

角色可能相当“简单”(很多都是sanserif),我很乐意重建为ANSI(字符32-127)

更新:[对于SO读者的信息;不影响赏金]。 我一直在从一个例子中提取矢量,这些矢量包括描绘字形的笔划,因此即使是简单的字形,例如“I”也是“空心的”。我怀疑所有矢量字体都是如此。我已经验证了同一个字符的多个实例具有相同的内部坐标,这可以用于字体之间的查找和区分(小的差异将显示在小数位)。如果字体精确缩放,并且如果我们有字体的坐标(允许版权),则查找其内部坐标是一种强大的方法。如果有人试过这个,我会感兴趣的。

2 个答案:

答案 0 :(得分:3)

您的问题指出了在未知格式和字体系列的背景下将矢量编码转换为字符的最成功和众所周知的解决方案。事实上,你所缺乏的,以及所有你要求的,都是一种解决方案,可以对任意(但理想的高)质量水平重新编码流。

让我们依次探讨每个候选方法及其可能性:

  1. 机器学习发现原始字体系列

    This paper更详细地讨论了该主题。最常见的技术(reference)是构造一个简单的support vector machine或执行Bayesian inference来确定每个字符的分类。

    您发现这些技术的最常见区域是spam detection,其中视觉检查电子邮件的完整正文,例如,ASCII艺术或编码为图像内容的垃圾邮件。文件阅读的矢量化分类,在初次通过后没有那么多。

  2. 将流写入画布并使用OCR

    这是支持它的软件最常用的技术,因为最常见的用例是传入的用于目视检查的扫描物理文档。这无法保留用于分类的矢量路径,而是依赖于页面上字形的字符识别。

    此处有几种免费解决方案,包括OCR 4 Linux和现在免费的tesseract-ocr。有关更完整的列表(包括功能比较),请参阅here

  3. 基于笔画重建字符的启发式

    在大多数情况下,这些都来自机器学习技术,并被编码为OCR或手写识别软件。由于任意字符流的字符识别的分类问题是inductive in scope,因此这些问题通常仅限于用于支持启发式的特定语言。

    这项技术certainly exists。通过currently in use等工具Evernote,您可以免费上传文档(最多一点)并为您执行矢量分析。

  4. 由于在已知语言和可能已知的字体系列的上下文中第一种方法的时间消耗,我建议将(2)和(3)作为您的第一个停靠端口。 最简单的方法是获取free Evernote account并上传文档,纯粹是为了查看被捕获的内容。

    祝你好运。如果当前的技术水平不足,您可能会有一个有用的角落案例值得为该领域做出贡献。 :)

答案 1 :(得分:0)

将文档上传到Google文档。出现提示时,请确保选中“上载设置”对话框选项“将文本从PDF和图像文件转换为Google文档”。 Google文档Upload or download files帮助显示 .jpg,.gif,.png,.pdf 文件类型 OCR 。如果它不喜欢您的PDF格式,请尝试在上传之前将其转换为.png或.gif文件。

注意:Google的About Optical Character Recognition页面提及“对于PDF文件,我们只查看搜索要提取的文本时的前10页。”