data Ġclass ĠO cr Element Ġ( ĊĠĠĠ Ġval Ġtext : ĠString , ĊĠĠĠ Ġval Ġleft : ĠInt , ĊĠĠĠ Ġval Ġtop : ĠInt , ĊĠĠĠ Ġval Ġright : ĠInt , ĊĠĠĠ Ġval Ġbottom : ĠInt Ċ ) Ġ{ ĊĠĠĠ Ġval Ġmid : ĠFloat ĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġ( bottom Ġ+ Ġtop ). toFloat () Ġ/ Ġ 2 ĊĊĠĠĠ Ġval Ġheight : ĠInt ĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġbottom Ġ- Ġtop Ġ+ Ġ 1 Ċ } Ċ Ċ type alias ĠLine Ġ= ĠList < O cr Element > Ċ Ċ fun Ġfirebase Text To Lines ( text : ĠFirebase Vision Text ) Ġ{ ĊĠĠĠ Ġval Ġsorted Ġ= Ġtext ĊĠĠĠĠĠĠĠ Ġ. text Blocks ĊĠĠĠĠĠĠĠ Ġ. flatMap Ġ{ Ġit . lines Ġ} ĊĠĠĠĠĠĠĠ Ġ. map Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠO cr Element ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . text , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . bounding Box !!. left , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . bounding Box !!. top , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . bounding Box !!. right , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . bounding Box !!. bottom ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ. sorted By Ġ{ Ġit . mid Ġ} ĊĊĠĠĠ Ġval Ġunified Lines Ġ= ĠLinkedList < Line >() ĊĊĠĠĠ Ġvar Ġcurrent Line Ġ= ĠArrayList < O cr Element >() ĊĊĠĠĠ Ġval Ġboxes Iterator Ġ= Ġsorted . iterator () ĊĊĠĠĠ Ġif Ġ( boxes Iterator . hasNext ()) Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġlast Box Ġ= Ġboxes Iterator . next () ĊĠĠĠĠĠĠĠ Ġcurrent Line . add ( last Box ) ĊĊĠĠĠĠĠĠĠ Ġwhile Ġ( boxes Iterator . hasNext ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġc rt Box Ġ= Ġboxes Iterator . next () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġthresh Val Ġ= ĠTH RESH OLD Ġ* Ġ( crt Box . height Ġ+ Ġlast Box . height ). toFloat () Ġ/ Ġ 2 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( crt Box . mid Ġ- Ġlast Box . mid Ġ< Ġthresh Val ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcurrent Line . add ( crt Box ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġsorted Line Ġ= Ġcurrent Line . sorted By Ġ{ Ġit . left Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġunified Lines . add ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLine ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsorted Line ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcurrent Line Ġ= ĠArrayList () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcurrent Line . add ( crt Box ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlast Box Ġ= Ġc rt Box ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġif Ġ( current Line . isNotEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠ Ġunified Lines . add ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLine ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcurrent Line ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġreturn Ġunified Lines Ċ }