Ввод:
LineNo word_num left top width text
1 1 322 14 14 My
1 2 304 4 41 Name
1 3 322 5 9 is
1 4 316 14 20 Raghav
2 1 420 129 34 Problem
2 2 420 31 27 just
2 3 420 159 27 got
2 4 431 2 38 complicated
1 1 322 14 14 #40
1 2 304 4 41 @gmail.com
2 1 420 129 34 2019
2 2 420 31 27 January
Как видите, есть столбцы lineNo , left , top и word_num , поэтому я пытался, смогу ли я получить некоторую логику, используя обе эти возможности, возможно, я смогу достичь своего решения.
Я хотел сделать некоторые изменения в выводе, на самом деле этот вывод идетчерез PDF после его преобразования в изображение, так что он перехватывает всю строку, из-за которой идет вся строка, а вывод не имеет смысла, и сейчас я думаю о том, чтобы сгруппировать текст в полном смысле.Например, скажем, этот вывод я получаю, используя это:
g = df ['line_num']. Ne (df ['line_num']. Shift ()). Cumsum () out = '\ n'.join (df.groupby (g) [' text ']. agg (' '.join)) print (out)
Output =
"Меня зовут raghav # 40 @gmail.com
Проблема только усложнилась $ 2019 Январь "
Ожидаемый результат =
" Меня зовут raghav
* 40
@ gmail.com
Проблема только усложнилась
2019 Январь "
Все они в разных строках, независимо от того, находятся ли они в одной строке или нет, но логически сгруппированы в разные строки.
В моем понимании, возможно, мы сможем добиться этого, выполнив следующие действия: введите описание изображения здесь a) Слова в одной строке сгруппированы, если x расстояние
b) Слова в следующей строке сгруппированы с предыдущим, если у расстояние <порог </p>
Порог - ширина (изображение) / 100;х расстояние рассчитывается от слева ;y расстояние рассчитывается от вершины.
Можем ли мы сделать это?Дайте мне знать, если вопрос недостаточно ясен!Спасибо!
Добавлено изображение, которое я пытаюсь получить, данные в нем немного сложнее, я изменил его, как мне!