从OCR文本中提取段落符号?

时间:2011-05-08 04:20:22

标签: python latex ocr tesseract

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

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

enter image description here

输出(有一些错误):

enter image description here

如您所见,不会保留任何段落或缩进。

使用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脚本非常简单。

谢谢!

2 个答案:

答案 0 :(得分:4)

您可以通过查看每个5-10像素水平切片的entropy将图像拆分为多个段落。

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

答案 1 :(得分:0)

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