Извлечение разрывов абзаца из текста OCR? - PullRequest
9 голосов
/ 08 мая 2011

Я пытаюсь воссоздать абзацы и отступы из вывода текста изображения 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 ]

4 голосов
/ 08 мая 2011

Вы можете разбить изображение на несколько абзацев, взглянув на энтропию каждого 5-10 пиксельного горизонтального среза.

Это означает, что вы делите изображение на несколько горизонтальных полос, каждая из которых имеет высоту 5-10 пикселей. Если полоса не «занята», вы можете предположить, что там нет текста. Вы можете использовать это для выделения абзацев. Теперь вы берете каждый абзац отдельно и вводите его в свой OCR.

0 голосов
/ 08 мая 2011

Вы можете попытаться определить, могло ли первое слово в строке легко поместиться на предыдущей строке, что указывает на намеренную новую строку вместо простого поиска коротких строк. Помимо этого (и обращая пристальное внимание на пунктуацию, как вы делаете в своем примере), я думаю, что единственный другой вариант - возврат к исходным изображениям.

...