10

我正在尝试从 OCR 图像文本的输出中重新创建段落和缩进,如下所示:

输入(想象这是一张图片,不是输入的):

在此处输入图像描述

输出(有一些错误):

在此处输入图像描述

如您所见,没有保留段落分隔符或缩进。

使用 Python,我尝试了这样的方法,但它不起作用(经常失败):

代码

def smart_format(text):
  textList = text.split('\n')
  temp = ''

  averageLL = sum([len(line) for line in textList]) / len(textList)

  for line in textList:
    if (line.strip().endswith('!') or line.strip().endswith('.') or line.strip().endswith('?')) and not line.strip().endswith('-'):
      if averageLL - len(line) > 7:
        temp += '{{ paragraph }}' + line + '\n'
      else:
        temp += line + '\n'
    else:
      temp += line + '\n'

  return temp.replace(' -\n', '').replace('-\n', '').replace(' \n', '').replace('\n', ' ').replace('{{ paragraph }}', '\n\n      ')

有人对我如何重新创建此布局有任何建议吗?我正在处理旧书,所以我希望用 LaTeX 重新排版它们,因为创建 Python 脚本来做到这一点非常简单。

谢谢!

4

2 回答 2

5

您可以通过查看每个 5-10 像素水平切片的熵将图像分成多个段落。虽然这通常用于从较大的图像或视频创建“有趣”的缩略图,但您也可以使用它来识别文本的存在或不存在。就是这样。

您将图像分成一堆水平条带,每个条带高 5-10 像素。如果条带不“忙”,那么您可以假设那里没有文本。您可以使用它来隔离段落。现在,您将每个段落单独提取,并将其输入到您的 OCR 中。

于 2011-05-08T04:31:06.300 回答
1

您可以尝试判断一行中的第一个单词是否可以轻松地放在前一行,表示有意换行,而不是纯粹寻找短行。除此之外(并像您在示例中那样密切注意标点符号),我认为唯一的其他选择是回到原始图像。

于 2011-05-08T05:00:39.157 回答