MCPcopy Create free account
hub / github.com/clips/pattern / get_textlines

Method get_textlines

pattern/web/pdf/layout.py:462–526  ·  view source on GitHub ↗
(self, laparams, objs)

Source from the content-addressed store, hash-verified

460 return
461
462 def get_textlines(self, laparams, objs):
463 obj0 = None
464 line = None
465 for obj1 in objs:
466 if obj0 is not None:
467 k = 0
468 if (obj0.is_compatible(obj1) and obj0.is_voverlap(obj1) and
469 min(obj0.height, obj1.height) * laparams.line_overlap < obj0.voverlap(obj1) and
470 obj0.hdistance(obj1) < max(obj0.width, obj1.width) * laparams.char_margin):
471 # obj0 and obj1 is horizontally aligned:
472 #
473 # +------+ - - -
474 # | obj0 | - - +------+ -
475 # | | | obj1 | | (line_overlap)
476 # +------+ - - | | -
477 # - - - +------+
478 #
479 # |<--->|
480 # (char_margin)
481 k |= 1
482 if (laparams.detect_vertical and
483 obj0.is_compatible(obj1) and obj0.is_hoverlap(obj1) and
484 min(obj0.width, obj1.width) * laparams.line_overlap < obj0.hoverlap(obj1) and
485 obj0.vdistance(obj1) < max(obj0.height, obj1.height) * laparams.char_margin):
486 # obj0 and obj1 is vertically aligned:
487 #
488 # +------+
489 # | obj0 |
490 # | |
491 # +------+ - - -
492 # | | | (char_margin)
493 # +------+ - -
494 # | obj1 |
495 # | |
496 # +------+
497 #
498 # |<-->|
499 # (line_overlap)
500 k |= 2
501 if ( (k & 1 and isinstance(line, LTTextLineHorizontal)) or
502 (k & 2 and isinstance(line, LTTextLineVertical)) ):
503 line.add(obj1)
504 elif line is not None:
505 yield line
506 line = None
507 else:
508 if k == 2:
509 line = LTTextLineVertical(laparams.word_margin)
510 line.add(obj0)
511 line.add(obj1)
512 elif k == 1:
513 line = LTTextLineHorizontal(laparams.word_margin)
514 line.add(obj0)
515 line.add(obj1)
516 else:
517 line = LTTextLineHorizontal(laparams.word_margin)
518 line.add(obj0)
519 yield line

Callers 1

analyzeMethod · 0.95

Calls 10

addMethod · 0.95
LTTextLineVerticalClass · 0.85
is_compatibleMethod · 0.80
is_voverlapMethod · 0.80
voverlapMethod · 0.80
hdistanceMethod · 0.80
is_hoverlapMethod · 0.80
hoverlapMethod · 0.80
vdistanceMethod · 0.80

Tested by

no test coverage detected