From 79afb45e2ee290c7e0130062f7f17376e4885e83 Mon Sep 17 00:00:00 2001 From: Vinayak Mehta Date: Thu, 15 Sep 2016 20:51:59 +0530 Subject: [PATCH] Support for vertical tables in Stream * Change var names * Add test pdf * Add tests for Lattice rotation * Add support for vertical tables in Stream, test pdfs * Add tests for Stream rotation --- camelot/lattice.py | 29 ++++--- camelot/stream.py | 60 +++++++++++---- camelot/utils.py | 46 ++++++----- tests/agstat.pdf | Bin 0 -> 15695 bytes ...ted_table.pdf => left_rotated_table_1.pdf} | Bin tests/left_rotated_table_2.pdf | Bin 0 -> 54164 bytes ...ed_table.pdf => right_rotated_table_1.pdf} | Bin tests/right_rotated_table_2.pdf | Bin 0 -> 54242 bytes tests/test_lattice.py | 72 +++++++++++++++++- tests/test_stream.py | 61 ++++++++++++++- tools/camelot | 4 +- 11 files changed, 222 insertions(+), 50 deletions(-) create mode 100644 tests/agstat.pdf rename tests/{left_rotated_table.pdf => left_rotated_table_1.pdf} (100%) create mode 100644 tests/left_rotated_table_2.pdf rename tests/{right_rotated_table.pdf => right_rotated_table_1.pdf} (100%) create mode 100644 tests/right_rotated_table_2.pdf diff --git a/camelot/lattice.py b/camelot/lattice.py index 3819fbb..e372b9b 100644 --- a/camelot/lattice.py +++ b/camelot/lattice.py @@ -9,9 +9,10 @@ from .imgproc import (adaptive_threshold, find_lines, find_table_contours, find_table_joints) from .table import Table from .utils import (scale_to_pdf, scale_to_image, segments_bbox, text_bbox, - detect_vertical, merge_close_values, get_row_index, + get_rotation, merge_close_values, get_row_index, get_column_index, get_score, reduce_index, outline, - fill_spanning, count_empty, encode_list, pdf_to_text) + fill_spanning, count_empty, encode_list, get_page_layout, + get_text_objects) __all__ = ['Lattice'] @@ -62,7 +63,7 @@ class Lattice: page as value. """ def __init__(self, table_area=None, fill=None, mtol=[2], scale=15, - invert=False, margins=(2.0, 0.5, 0.1), debug=None): + invert=False, margins=(1.0, 0.5, 0.1), debug=None): self.method = 'lattice' self.table_area = table_area @@ -82,10 +83,14 @@ class Lattice: Dictionary with page number as key and list of tables on that page as value. """ - text, __, width, height = pdf_to_text(pdfname, self.char_margin, - self.line_margin, self.word_margin) + layout, dim = get_page_layout(pdfname, char_margin=self.char_margin, + line_margin=self.line_margin, word_margin=self.word_margin) + ltchar = get_text_objects(layout, LTType="char") + lttextlh = get_text_objects(layout, LTType="lh") + lttextlv = get_text_objects(layout, LTType="lv") + width, height = dim bname, __ = os.path.splitext(pdfname) - if not text: + if not ltchar: logging.warning("{0}: PDF has no text. It may be an image.".format( os.path.basename(bname))) return None @@ -156,9 +161,11 @@ class Lattice: # select elements which lie within table_bbox table_data = {} v_s, h_s = segments_bbox(k, v_segments, h_segments) - t_bbox = text_bbox(k, text) - table_data['text_p'] = 100 * (1 - (len(t_bbox) / len(text))) - table_rotation = detect_vertical(t_bbox) + char_bbox = text_bbox(k, ltchar) + lh_bbox = text_bbox(k, lttextlh) + lv_bbox = text_bbox(k, lttextlv) + table_data['text_p'] = 100 * (1 - (len(char_bbox) / len(ltchar))) + table_rotation = get_rotation(char_bbox, lh_bbox, lv_bbox) cols, rows = zip(*table_bbox[k]) cols, rows = list(cols), list(rows) cols.extend([k[0], k[2]]) @@ -187,7 +194,7 @@ class Lattice: rerror = [] cerror = [] - for t in text: + for t in char_bbox: try: r_idx, rass_error = get_row_index(t, rows) except TypeError: @@ -207,7 +214,7 @@ class Lattice: for j in range(len(table.cells[i])): t_bbox = table.cells[i][j].get_objects() try: - cell_rotation = detect_vertical(t_bbox) + cell_rotation = get_rotation(t_bbox) except ZeroDivisionError: cell_rotation = '' pass diff --git a/camelot/stream.py b/camelot/stream.py index 010b0d7..efc1eda 100644 --- a/camelot/stream.py +++ b/camelot/stream.py @@ -7,8 +7,8 @@ import copy_reg import numpy as np from .table import Table -from .utils import (get_row_index, get_score, count_empty, encode_list, - pdf_to_text, text_bbox) +from .utils import (rotate, get_row_index, get_score, count_empty, encode_list, + get_page_layout, get_text_objects, text_bbox, get_rotation) __all__ = ['Stream'] @@ -199,7 +199,7 @@ class Stream: page as value. """ def __init__(self, table_area=None, columns=None, ncolumns=None, ytol=[2], - mtol=[2], margins=(2.0, 0.5, 0.1), debug=False): + mtol=[0], margins=(1.0, 0.5, 0.1), debug=False): self.method = 'stream' self.table_area = table_area @@ -219,17 +219,20 @@ class Stream: Dictionary with page number as key and list of tables on that page as value. """ - __, text, width, height = pdf_to_text(pdfname, self.char_margin, - self.line_margin, self.word_margin) + layout, dim = get_page_layout(pdfname, char_margin=self.char_margin, + line_margin=self.line_margin, word_margin=self.word_margin) + ltchar = get_text_objects(layout, LTType="char") + lttextlh = get_text_objects(layout, LTType="lh") + lttextlv = get_text_objects(layout, LTType="lv") + width, height = dim bname, __ = os.path.splitext(pdfname) - if not text: + if not lttextlh: logging.warning("{0}: PDF has no text. It may be an image.".format( os.path.basename(bname))) return None if self.debug: - self.debug_text = [(t.x0, t.y0, t.x1, t.y1) for t in text] - return None + self.debug_text = [] if self.table_area is not None: if self.columns is not None: @@ -261,11 +264,35 @@ class Stream: for k in sorted(table_bbox.keys(), key=lambda x: x[1], reverse=True): # select elements which lie within table_bbox table_data = {} - t_bbox = text_bbox(k, text) + table_rotation = get_rotation(ltchar, lttextlh, lttextlv) + if table_rotation != '': + t_bbox = text_bbox(k, lttextlv) + if table_rotation == 'left': + if self.debug: + self.debug_text.extend([(t.x0, t.y0, t.x1, t.y1) for t in lttextlv]) + for t in t_bbox: + x0, y0, x1, y1 = t.bbox + x0, y0 = rotate(0, 0, x0, y0, -np.pi / 2) + x1, y1 = rotate(0, 0, x1, y1, -np.pi / 2) + t.set_bbox((x0, y1, x1, y0)) + elif table_rotation == 'right': + for t in t_bbox: + x0, y0, x1, y1 = t.bbox + x0, y0 = rotate(0, 0, x0, y0, np.pi / 2) + x1, y1 = rotate(0, 0, x1, y1, np.pi / 2) + t.set_bbox((x1, y0, x0, y1)) + else: + if self.debug: + self.debug_text.extend([(t.x0, t.y0, t.x1, t.y1) for t in lttextlh]) + t_bbox = text_bbox(k, lttextlh) t_bbox.sort(key=lambda x: (-x.y0, x.x0)) + text_x_min = min([t.x0 for t in t_bbox]) + text_y_min = min([t.y0 for t in t_bbox]) + text_x_max = max([t.x1 for t in t_bbox]) + text_y_max = max([t.y1 for t in t_bbox]) rows_grouped = _group_rows(t_bbox, ytol=self.ytol[table_no]) - rows = _join_rows(rows_grouped, k[3], k[1]) + rows = _join_rows(rows_grouped, text_y_max, text_y_min) elements = [len(r) for r in rows_grouped] guess = False @@ -275,8 +302,13 @@ class Stream: # similar to else condition # len can't be 1 cols = self.columns[table_no].split(',') - cols = [(float(cols[i]), float(cols[i + 1])) - for i in range(0, len(cols) - 1)] + cols = [float(c) for c in cols] + if table_rotation != '': + if table_rotation == 'left': + cols = [rotate(0, 0, 0, c, -np.pi / 2)[0] for c in cols] + elif table_rotation == 'right': + cols = [rotate(0, 0, 0, c, np.pi / 2)[0] for c in cols] + cols = [(cols[i], cols[i + 1]) for i in range(0, len(cols) - 1)] else: if self.ncolumns is not None and self.ncolumns[table_no] != -1: ncols = self.ncolumns[table_no] @@ -288,7 +320,7 @@ class Stream: " isn't the same as what you specified." " Change the value of mtol.".format( os.path.basename(bname))) - cols = _join_columns(cols, k[0], k[2]) + cols = _join_columns(cols, text_x_min, text_x_max) else: guess = True ncols = max(set(elements), key=elements.count) @@ -310,7 +342,7 @@ class Stream: outer_text = [t for t in t_bbox if t.x0 > cols[-1][1] or t.x1 < cols[0][0]] inner_text.extend(outer_text) cols = _add_columns(cols, inner_text, self.ytol[table_no]) - cols = _join_columns(cols, k[0], k[2]) + cols = _join_columns(cols, text_x_min, text_x_max) table = Table(cols, rows) rerror = [] diff --git a/camelot/utils.py b/camelot/utils.py index 584c95c..8551851 100644 --- a/camelot/utils.py +++ b/camelot/utils.py @@ -11,7 +11,7 @@ from pdfminer.pdfinterp import PDFResourceManager from pdfminer.pdfinterp import PDFPageInterpreter from pdfminer.pdfdevice import PDFDevice from pdfminer.converter import PDFPageAggregator -from pdfminer.layout import LAParams, LTChar, LTTextLineHorizontal +from pdfminer.layout import LAParams, LTChar, LTTextLineHorizontal, LTTextLineVertical def translate(x1, x2): @@ -144,7 +144,7 @@ def scale_to_pdf(tables, v_segments, h_segments, factors): return tables_new, v_segments_new, h_segments_new -def detect_vertical(text): +def get_rotation(ltchar, lttextlh=None, lttextlv=None): """Detects if text in table is vertical or not and returns its orientation. @@ -156,13 +156,18 @@ def detect_vertical(text): ------- rotation : string """ - num_v = [t for t in text if (not t.upright) and t.get_text().strip()] - num_h = [t for t in text if t.upright and t.get_text().strip()] - vger = len(num_v) / float(len(num_v) + len(num_h)) rotation = '' - if vger > 0.8: - clockwise = sum(t.matrix[1] < 0 and t.matrix[2] > 0 for t in text) - anticlockwise = sum(t.matrix[1] > 0 and t.matrix[2] < 0 for t in text) + if lttextlh is not None and lttextlv is not None: + hlen = len([t for t in lttextlh if t.get_text().strip()]) + vlen = len([t for t in lttextlv if t.get_text().strip()]) + vger = 0.0 + else: + hlen = len([t for t in ltchar if t.upright and t.get_text().strip()]) + vlen = len([t for t in ltchar if (not t.upright) and t.get_text().strip()]) + vger = vlen / float(hlen+vlen) + if hlen < vlen or vger > 0.8: + clockwise = sum(t.matrix[1] < 0 and t.matrix[2] > 0 for t in ltchar) + anticlockwise = sum(t.matrix[1] > 0 and t.matrix[2] < 0 for t in ltchar) rotation = 'left' if clockwise < anticlockwise else 'right' return rotation @@ -520,7 +525,7 @@ def encode_list(ar): return ar -def extract_text_objects(layout, LTObject, t=None): +def get_text_objects(layout, LTType="char", t=None): """Recursively parses pdf layout to get a list of text objects. @@ -539,6 +544,12 @@ def extract_text_objects(layout, LTObject, t=None): t : list List of text objects. """ + if LTType == "char": + LTObject = LTChar + elif LTType == "lh": + LTObject = LTTextLineHorizontal + elif LTType == "lv": + LTObject = LTTextLineVertical if t is None: t = [] try: @@ -546,15 +557,14 @@ def extract_text_objects(layout, LTObject, t=None): if isinstance(obj, LTObject): t.append(obj) else: - t += extract_text_objects(obj, LTObject) + t += get_text_objects(obj, LTType=LTType) except AttributeError: pass return t -def pdf_to_text(pname, char_margin, line_margin, word_margin): - # pkey = 'page-{0}'.format(p) - # pname = os.path.join(self.temp, '{}.pdf'.format(pkey)) +def get_page_layout(pname, char_margin=2.0, line_margin=0.5, word_margin=0.1, + detect_vertical=True, all_texts=True): with open(pname, 'r') as f: parser = PDFParser(f) document = PDFDocument(parser) @@ -562,16 +572,16 @@ def pdf_to_text(pname, char_margin, line_margin, word_margin): raise PDFTextExtractionNotAllowed laparams = LAParams(char_margin=char_margin, line_margin=line_margin, - word_margin=word_margin) + word_margin=word_margin, + detect_vertical=detect_vertical, + all_texts=all_texts) rsrcmgr = PDFResourceManager() device = PDFPageAggregator(rsrcmgr, laparams=laparams) interpreter = PDFPageInterpreter(rsrcmgr, device) for page in PDFPage.create_pages(document): interpreter.process_page(page) layout = device.get_result() - lattice_objects = extract_text_objects(layout, LTChar) - stream_objects = extract_text_objects( - layout, LTTextLineHorizontal) width = layout.bbox[2] height = layout.bbox[3] - return lattice_objects, stream_objects, width, height \ No newline at end of file + dim = (width, height) + return layout, dim \ No newline at end of file diff --git a/tests/agstat.pdf b/tests/agstat.pdf new file mode 100644 index 0000000000000000000000000000000000000000..cf1c25aaf6e09549c98005cf9d667503ad529efe GIT binary patch literal 15695 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 literal 0 HcmV?d00001 diff --git a/tests/left_rotated_table.pdf b/tests/left_rotated_table_1.pdf similarity index 100% rename from tests/left_rotated_table.pdf rename to tests/left_rotated_table_1.pdf diff --git a/tests/left_rotated_table_2.pdf b/tests/left_rotated_table_2.pdf new file mode 100644 index 0000000000000000000000000000000000000000..a5f7c14739d2fae8d2c902a5e04facccbe1ace98 GIT binary patch literal 54164 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

+Y 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 L9v+{ZAea3ELitLy literal 0 HcmV?d00001 diff --git a/tests/right_rotated_table.pdf b/tests/right_rotated_table_1.pdf similarity index 100% rename from tests/right_rotated_table.pdf rename to tests/right_rotated_table_1.pdf diff --git a/tests/right_rotated_table_2.pdf b/tests/right_rotated_table_2.pdf new file mode 100644 index 0000000000000000000000000000000000000000..5cee89b30388529002f2acd406bf4bc819195694 GIT binary patch literal 54242 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

S%xG>qJ963;#Ctp zQ)64?Qu>(;RSlJpkz2wN5Uq#60HHgD5^N@xujG$rJ!IGnOA{){Skl-mZ4~3OO|dIw zhUNZ!)~Bl2@{2GaYtEJKi2|e^w49R07 zJT0GOiM20xIe1uhvf7rv37whHc<~UJ`#gN;52@Uq&K~tIl?{Twp@2&g1>;Duly0 z%JNL-<@}Y$nQO`P9Pq`(Ywoq2rQff7@M0qJxer961J= z>9fP>KK@En%*uRNF?m%qLz()(sR8WskY;%|ve}?ca?(lyS$M&%Cm*K81ZuX#;a~l? zHswwNO+^?>jNeF0b=!>`N7TrZ(ZRqiLS4E+;rV!T?hLVKXF>P19GA=*x#&Lt9?q|$ zt0RU34G_4^U zm`EC;5pSd)rE_}KWt*cm<(quk5S{XFsa`7MK~Q=@5CQq^TbXnSwPLq=E&~XLQMRztglYsKw}QuXP`o+rwCAms(nZI=`U3ZH8vuIX8b z-jbpkd@%rGkiYQLoG~@`G1pK1j%7tLjb&KfkQ>3Ut~xoJW%t&KovHMN4lN#4L#G5M z*v>#a`@nOfbFuK$Vjc-zW127HS-0{>OEGsmoC8Z zU=jRbQB0j9pC&tXc-D>T!_%exCp;-DCJ(iQj^j&`${}W$MHKUD$IdFDTF^!i#4m{I z(%8D;#Rxa0c?psebJ@blkBQw%SHKw>lP+`!iMJf?4Sm~OIv5FER@2-~kSiJhvBZx5 zK6w#G6X^@R#E5XurJQ&vZ*D<(nm)}qxQ^Ld zw?OG{Q8E6*k;3uPLkQ(y^03|L@w!qZVg6ENwP8m+q`HxM*)zI&$tFb9W4;)DzJfq# zQkS}YplS`SaE`OEM&8IXDknWaQ}f?-Osu@HjZSMFC*mx4jY`G8b77l!*5a# z;ELWpPsilFYt-PzaCFaaZ$Dz%S*zX#J2Mo4BWgC19}MbvnLP#hSUGuH078W{BF>Sc zJut@J_#Zp%BR;uolh3#6Ef8ltwb&!&UYivVU?Z(l_v$Dx@~6=7xp;TMGJ-G+xj~9h zl}_==Khejwvthz|2nBT7V`!EZm+%Y5^rNZFWpaoD>P-i+)4(L2UtBlW^HgR(rfF|? zojV_$ClBA*28hT)%E%cgXg3Si;>6$!QV@(hB-pGANQ6U$s!dS$D}|#jzm(;#%z3lQ znak4OvpJmSdR=)ALDmHIz)?j6EX%~(yEKnr&nntVFt9e#(4QYd{Bqni~(^0+|(RESy zbiMR;(G_K0plnm!!Z^snih+ok@LcghNi%rk(3$DD_!RsBbHnx&Swwh@X(3`6(oryK z&@9vz60h?v7souzzpU6o{=Jr!kHTUGr1oc(URVUbTEy=ylFxJlKH};S>h;jqCc9?L zWuWBUemj8Q5ALuZEFX*wX!;~GoWW=m5i*4AyC%zu1qBdZTG3xbC2%l}ZwEhug6 zPOQ8rCcEe;7mLM&GWH(P0aexy2%SztD17qJo|DFG_ZN92E?S{`=tU+j+iK;mibGI8 zM1BOD7%;jq*ZbrC@0GMS2x62xOR_80$JdY%oewFe361Z185!+z>Y4=58i>m3%E}iQ z>TGVOnS>>n>O1?1FeRY8`l7d}H#vjUMFmm;?%V<+3`(1@^^~-r1@!bmlK+B?*>e zSbp+Ftqq5@9PeyMBWz~y`Eew>WiOnV6 zk3V!5agiaVpQSmILO=2wk#3SQmUj?roYtNkRiZ0us4M`D2JdEwq13F+kkaDM6w z9!Fyb;fU=07gRJaNg;&4<7Mdx3E9OydHYZi^2*xxhDWkha?Cz!?YF>cR=9uOz(T0U zwMSwuyy-nQF6SJen2Rs&$;*DigmSXDnl4_alS5cKE|`_ZPB4jQe)Odl`ee)}9^hkE zInF-ER-@bO26~zbRYQMZcgA0dCLXMApj}lTzN|Ua^zYDv?l^&HO`Kwi)STT_7q03f zvPXFqq!V<+Pm-~O8Mc&%XO)w{Wki;Wjmeqb_8KTmF&r6ue?8tPu_Q#_$?SQsA8N13 zK)#dw@&UW|JLBci1-wO*1+4@t*1Oc`rE!g-P2^J4`$nHysgBj6D6!NfSZ6z@8dp-0 zM_DiWjQZ*n2R+Kqg2@`m^s7^eq*05pThrHMJFY5pKNZ>M0JTkhk;O2?iuL_gtaON+ zfo2nH8+2j1F6hEIN%ege7`0=)KpUlhl;QIL)*Z;)tKV_`b>-S9(#w2js^M3c`hq>v z=ZZPq`uknbbAl7)V;yh7m2&x!^h!Sc5dm9%{j88Z03k01xwq?WdXMAo?M?Crv}7#A1}c`a*P@$$BT*WXH^pQfY@4z$?p~MFQ#hqFnqHDUYQ#&=#{S^4AE}L0@eU_W`w)IEoPS^R?GIc?lqv0Uf?!KWGZdoR|ZHt0Ez6c z+wKov7r(JyC{EA|Vm(jd>AEsU z`@*l}qItFl$@&16tX_I1UV$cnq|z!z@hielX^|hvO081rBE8fS(W*v)G_epVDn>!G z0SRwM?ie;&?{M|tE|+s+yuLBhz3m(i@3`M+$$6>yHG6phCC+C!a!vRw7q z#8m__b|b!hqsPruspC%}JON)wCYs&L0t!s|S>wPcM(bx8?JA+J+h7Ej!f_Y4ZexBO z@IOJUK-Ax+#L(TeFvfaC&fwj{bT2_tKB=1qqd_v3Urg^#L{3$w81KJ7qyLBxb`3>7ESVfcSmlrLbG`iSU!okOTK|$ zSw7+dD;GRhVY=jd3*G6f{rs|r+3g5t(4_hy_Q=kSTD39QJs66J zZ0{iq0q8quEX?DTIA7NFL|$%tf1>z(LOpw~e!u8{L;n;Ci;R;wg>C}X-I1Ad60u_m z_<;k)O+o(&bf@YWs_v;0Zj;A#+2P;G<);dnyA$LcGFMWEINXDOK>g9Daw|&pJ;8N- z-EpN}apRK~&93*^`y5ho1}MCXm4y%g)jR@0XSbop&GsN{Px{w_3{;=8HU>x0vVR@?J}e+&fMWo_8CoTa!EUFKj@e4VaQEr+>w5a4 zm&P~er{(1y-V@mrs8D!|pTpm)lnV|qyMo1Aim?mW3he%u_4Z>9-w*5~tu4)|3hguW z`p7K7qU6q?E4*7F>{VH>{o;*a4B)OEL&5TPE370r4vV+w<97yzTa))Ygf2;U9(@Kk zTqk%Zu;mEGzzNx7Ox_pzdk0dD*(}TVFHaa(wAW(u5?ruX55(tJt`$P1?YxKe>BsL> ztBM`;myG6p7`hbaiOThQmXJE1s^w0i^2U5HDxX>W8A+SWdX(>lLtyhWj<(`M_H>Ii z_r)1ao^`684QGjsytmZmBnP~eY0aMH8j-2WZMPTp?EntRZQEhx9VK><65>z*$s>4Y|f zCC}zqPI|?50UwOdw3}_N)ul-tHXJE4u?1Of?*Y$J*({|>Dawn0Oz%yvQ%yJ39LJk3 zOGL#t!b2`CH)-z1Y*a0K?Jf==JygF?#hZHK`n+PUK8&})N8%K)d9hkC*)DK)-3B9Y zbct%wTrmuE%rlF(hZ`0nzCm`u&^%DB5_|H#l5fO-TP}t$Pkqq8ntL(nUlcIr)W0vE zHL7QdxC5vEz3X}{7XbF(WPX5d z;X!aqeCEFtb3yMFFr60k^50i9I7(r?^0k~qZZ$+cT@<|2p6AHV=&njod^Vn%s37(fegqxgrtQr( zfm8Qp(G&c<0D2rmb;>0-$y4Dx8St$_t3p#FLLmxFGW9jlIlvLD|J)cC4p(NDZ>*2Y zPl`gSviy(Z=(>9Cwu9`GO9HK(BU`|~u=6%vDYH%juK~JRAC&S^SdVw`J(0ffM_%dG zJ}~oCMzMw*iVUVhupiCSen|3oh#x!nT_C==7ouR_FtI(DIEFK@P0Wmb!e}h=@ze96 zhe)OM!gHHW8EFLz_~B&J<$1Md>P<1-)n-32hh6!NRnf%sy}%cp(cye}rMH?5QLqP7 z{z$Dl*rRO(C||WiGavMXv@^yb{FKIUIscbo= zUb6w{`KWc#lpaO6Z%1oA7JQbQqEf_H@QF$wpNixi5o0sr$)|Z3U#qVHTfzC%aAavE zv5lteJ`_ZCYai*;v7@=$j!A&t{UD6>0(ahkunh1@-42oCUXcF0PP)TJV++-3-leu( z^ZNlr$IcgOF^^hJ_zfL)nd&Wt56G!MK5t}oSZ;|t) z8SP{|+|3xyE_j~Y;b$0DPSD>=b(Q9q7^WAVJGcWMj<@e_HMQw1@1B3xtgK57m?%6} zv+5~*exqF1Ynu^2*Rx7XJl34zw>VThO4ql6Qo0Kt&st)=X!q5LCepi1UtFJtX!(rv z2sz{~HuRQel~P*eUn~1$Zg5_#X4^yTGu4!)#mvxHM^!-JlRr&*J_kw$sGR9YD!O++wb1Fr#@EwSzj5UZ$pY=%$rtJ20I>DUyszy299QA7RIS|cZa zti&dgI0PMo(U-YO1kX7y`M#LJrad+2)`{AVxz~9!Vs$7#s|9MH*h~Wq393I~=LX!3 z;kv5_Qee`z10$Qnl&uQ66+xhnrb(`wwq{X(LTq7QqGCi3Gst9Uo3yM?3a?Pf z8Au!(jnZJp*_1X@=htV#bLdsN^FoZgwKsHYRB6mT09F_-h%QE;6!f39T9@pV`(pify)At5GK?d^JA$F{<+9L7C}9kA^iq z!ph+(u1*$f=jFsD((6a+5sZWfwa>GMPao_V6!fe7ry5 zuCD%dxw?1ns&9Q@tD{t*P*Es?`Bjhd^1`-Ulc#BNcaBxy|k&76Qao9C5XqT53Xh&4(PU^65&_C0u z>hpH+k~I`odw!@vVAqbQu8fydjoq?{uCTKW$xYMW4)t{4b^*h|=ro#DZzY49TU}@b z%>F(q4C`}u@ybV#%gJTN>Ww$sX$&?45r3E(T|1DOWi^FJ7%vL(BuyF*uO?5L&8|2I z#K~)=nUI;-A|CazQ@F6Qo*D3P_mFa1E5MvB+HS7T1?O!3YGhAqfIub9f6ipb8XKq! z)^w&~{vaGI2W=0}5ASqywFn0-CCjBJZ}5}#!;+E$=|_TOLf|M!sc(p9$aLPlFfsh% zI%f$+-)(x5b}R{YJZ^d-rs=H|k$nxYNw+4LnIClkSvku|7k)=t$^UWzq?8>_|2VC{ zozxIM?XoKp$$H4s4CN_p&x{ywwo9;bHfC34pHi+@DU~@mjF)+hV=(KlsOy{SSK~-B zm<8X0r<|NKG-;15t*BD(GY5tx%5(@b^>!|qz^$k zA_Z!)8CI|`W~L+-ja;xT1qhXdJz3FFs2b1uB1iq}KSH(5T^OoVc}MD^*2>hTQQGw7 z)dy+8jTO;16lwp4*DI2DC{h}A{V41uYU8UCdVrZ-O-CDWdTuRXBJ`jS*3^|v6_&4t zve2AIPK=@9Ej`wyTdJ~hc@J3Im0eaU*hAOQC~M*VDH#WDuLM=}z&7Mh7k$ICQ`p|W z6-R5xjOp3Zpm#=*kgXJXRz6*3m-x)xus-T@T_*gjzsTxmf@-Y+*ZZubi=r#@r$!J$ zTz`{eW2R=yI-JUoSVA3Mk%h%5LOuSb)>hBQ7S{ct)AaOOjh&Md1(1P=)2VZ4OYNC3JrF$*oOOX`wiPh(}xO!Gb8D3ZO! zWV#h}0bJgnAIcfSe{zv?-6K213JTV3eAWvx?5p=1dU7!-8ZL3WJNekO`L+@eGNE9A zUHS5}!bGt!;pD?j((}CT()8hUV&qv3U_Ecc5Q#2x7bGVoO48`L$&&Gwbi&fPBScD6 z!fb<8gy4&E>B5_CvKt#eWEf-l0~>Dy(S+3~CSTN6xQ@(R)Hqg2IZ9FaLk^!+EI-}^ zF)_LsoE#+V0|GSLSl-f*YuMgQ z-04#idt&?&1_T;H+4k}`Uo0CW*;!Z9+tQpk^#(U%KsV^Z%{z5%Nihy{rel`YMqRR^ zT|)TL*j9~|PnbAVHvx2n6c;jFHPxn|1ABt)t$5(mhS;NuF$>e+dNc4FGoa<7kkIhW! z74PbxJdFv@Bj0NT5xV`kpdj~<@V=(JWU!T*z> z=g677ORygK>L5ta9q0~)xQEOaF?7Y1-JReLqp*j~7kPBWr{5jv4$ZiS-X5`Z#k1L+ z;SOsbDYG@;=}t(vE$S5%EB>0Z%jy-wctzgXyYvLHwae=jOL#@<(>wJ9-nGm579)5? znT&iscyZpd&;mjGhr+WCb7^-~H}uSjziMi8-4EA^^uh4wgRw8d?_D8;T?2%jLA+5z zyh&udksn+U`C211>h&QRPH;m`c$~)cLjVv;CxBg#^m@FGqqY1Yn*0Gr#U7jdQB%c{ zYi3Vc<^aT`8ENwo9!G5&fIF7gLGq$Ms|D8Wz-~Ru(?Oxt#xOwIswmYggy3=4>t&o} z$PdV1FdW7VYhxM*yD})gp7HAN^J3^7_ziJim@hT->Pu762Ly}VSK><_y3!;V+5>_p z>`U{d6RE)doJkiI>s`Py}}hZl%>d8oYE=LsadJOcIlh4?j1q*wA8i|`25D_-H+QlQWL z*HaOoLhYhTAJQS^sOr$ zpP|cVP~Uxpx3sP+jgP^tXUNZe7DxpAA!@+aulGy_d5z+Xxs8*Zii?UJRW55D{w)1T z?a9?ip2^lp53VJxt&_ht+cw8G`*)5nJnxwwliwt{L9>J>4a}kB-8fuBc)msekc4y=qjZ+QbQb?t zDJ8~uCqZ~8E_gTe4esAw4L869Hv|>cPZc$Y6*a&WH3TNtPbP=Jj;q3iKKG@uWkRjL z`g%b?I5Z+SH2#iZgp6Sfoos}iYz(e$gsyH3zi5QNXbk$%FJaSbX7i8S+Vw5Cs}_{E z7Pjpg@xg%c!B7xkn+RctDQ250W`|3Dn@oO(ZE~A#a)*y$n}lJ9rD~g|YKO;eo5F5~ z<6@iPV&~^u=&QS5sC&?mdqA;!$dS8$ihJ;qdtkGB=;M=L>{HOxQ$Y1o$mNrN4)J;@ zg;a!DHxt~L1Kbo;)UZ_4I91fBMbso#)QD!(1Xt9Ud(;$|+_2bNaClmfbXwF%S^#xg zL}^-xWm?Qhnm=}0cv@PpR$BB*S|E2?WJ_8oFfI03%de}B2)33fvW6~2R73?;M43fI6;?#4W<(`dM7euJHJD6^ z81bHT1({5liA)umOsT5O*Z51hvrIMIXo=it1syT%Xwms-Zsus=`e=UpXz?2j(oI1C zO+hbBULH-+E=_Jcu_sO8EDb74NgYk`P1)~=vVzgFyt1;Q)3V(3vclD}{MNGK7pvbP zRt1Arc|}%5hgP}CR)vdJ`At^E52wFlP75Ya^QumZE>3f^PYX9s^E*$AKX88g;}rDZ zOD_~;(*dw)+_L?IZBUGC_~KEh zjy34gHYk@jXj?a^pEc;?-W79LC2&|rHd$pfoiV;w;;)wKtycOrNP0FZyt)WMx=4k( zh)KH04Y`O=y2uo}NSM3GAGru)x=5$Eh-!mNlT2 zHL;S_$DK9Sk~IX(ntImj?rQxF+fozxrzEoFkL;fUUjTKAEB5C_9mCO0)pkVH{%F;1 zS=Hfb)lPcV!D`iBYt_+<-FArG{-E7%k=@~;-A=OI!J^$>likt7#dgfa{^Z4O)y3h( z#ZLCc!REzY=f%+n!L~oaehN$>F??_Nsp(PHmGbMMI`?;cF=kreL%4eyC1?>7s0JZP{BJ=!3R{qdse|m*seR;t_R$%d)}@`NZ&h3-v>G%djjc%+zKV^M%Kpb4h;MLL&(;p%mBJI|8}0|_r%R`bEAXSH zVl-f3DQ|tg{qL!hqH}$Z`Zxrp7PGFi%Rv#i&Vm|u)kC|Ty4pl8lBIT|LsP|bHmFK3 zfBDxuhibhday~8Qy8zWl${&;I<9b-6c2O7}$=25qm95F5RRgq@<4IVZB7=qumOsx< zlp~i`%T$fL;usnq|I|TkS}A43HB~pd7biud z4l5-siq&4HWqzY#?HmfdjY0C#(QTQHO9MAqQtWZ#jL#)(U^pzaIG4?K z3usm5Y~TbAo69rNQIdW%A2gO&E#E-&MQiD4aB}}_t`gaB%`>6r&?={#J1v^G&}v*+ zPAxoO&Nc0$RNF9f`l0DVH;U2nT!ya3eb6RX1I7v}5B-GUjsb=-PA^3lMi)j81rKF|H`N-NOwthNjXPA2Gqvi@ zA#b4qUr}p6cLk;CI(4{*TBG7$n2KB)eZHa!%F+}EnxP=%vNG)Nf>-PXE?V?%vxHEK?I%nP1Y zsoF^ZnUL!L&1Z1<+r|f{IYSUi@Z<<}z7+5L>w*09`Fj zKC+5ABf{6!&vA(`tBVUIr-*z_{fCamnq0O}p@;o5jNXt9y%^hVK#TY-SoU7TkN{uK zM4wQkLs8JBLK!`y%g05Uz`AbH!Ch@d5$z&(S5}n=pBLTFLv(@l;OlMeUXh#t-S8ce zRYxzm9DK1=JTVUndX6V7{`#SbLBEq*(46z`qv!aAJ~%>$%?Q2&qC|(O9}KfVB$WK-#p)*TE?%ipZmK6`jP=ogYUiFThNsc~OSv~%{H{6hpJ@TSDp#+8$DEK) zecwCJY6Fk1iqbMiZuRhY+>^DBv*{a5bVp8tTc_E+GGyj7cc{zc9ve!0=$b#^>CL%r zQT|xE&2BHo+F1)FVA01*F7Jvz7^k+Qlo?~4Jc=2xRfg}wqY$u?%1K|v+evIpmple4 z$ZN-{%N3n*qJ2&;V8^6vNvV#$DQVNVYx=6V!3GIaTsd0CU8_|(voEKw2}8hm=UoVq zFJ9ibcRTufFH&SUX(q57bZU)?z9EfffHC<{l7lZhEzx_EJTizGr7K&e8vS+on{bTPLBbZf$AlHY32n{6yY9Qz^ z2qiL4MWi2DD@IG`+6?V$wJkHWfqW_g@oOrT*qd9bY{_RJ+DiT~f%pS;okE;<#JLKh z*X~t#A0(WF*Py$22~Yo3LS0lGrdlqfwe7U87O* zuT2D=%6=-z5E^&UFd%}j*yE_5nKFjkaXj2u9uKgaiaM0Zg|aIZMoJtL^gkR0)%meT z+(@YD$ax)}r>HPc!9gS<%(>jeyQ#>MIe_J*BL00?13~k*={|eTPIFYgoaNS?44Nf} z$XJ`QZGybwS<8~brsQxIv_n_Uz5R`y%(n=KfS5yVFXa? z_!y6IKBAy;Tj&hspT~D*=1sd*g<$ESfT4YAQKptAegZB#@JXDd|3u%UG| zwrS?bDJ#OQ(5}9w+QW&eC19<@=(EtV<{C`45Ccz#7Ew{lnc2m`4uUP1snw_8=VCrH znXNG>!x(knb+Tmp`peN^D?rIwnZWR(tde1o*6p7;j^To?g^KV>Bi?7(d-fV}O zIW$T)FW*bYv253x$_^+MdQQ(EVH%TE$7(&AdzU#We_%l#{!ON$NYpfucNRN5OdKW^ z>-^eLk)a{y4d))*qsIPHp!!dne4$D_p*Hp4$)}+<2T)3W(47KmI}Ht3p}fob_ECTU z)~_4u+_Sj9IS*Offm8`@XAAs(g}FC%`BmaMNk$}L4oV)6(W#nTN5lx{g{S!ap!Weq z_L0)1D8Nio-^dvyO@K6FgrOi4^{W{PWG|36O<|D}Z&0rw>zL5O? zx_3xQg`JDsuwRqd{8A`cBF7MC%TVkH*Bb-o)IaYEXSIweN|vXmR%38m?@e?NXl=GA zwEA#PymknC+HOuglq1F2$D%aT2D_bRVLuNKQ%W#Ic~zJ;U|Bxj!R9l?%#gBP3pSM( z4#nidG|#z)4c*W(3rlw+Ao_zkIi1ZcY|yShZgwiG*N@P(Q#ZdR78rbh^rZ4B>Ma|`S)W|gPpVf*i$~MjOVDl`ZV)v6gXzG z&xFZ>DD)Sp)Za@IIf{h1>`(tbLG1&dY*o=j+-1p3ee6+s%kdtx z#^G6j;~tl4V++R63_y6CkJF>-2&diMdmy5Swf#d9>4*7~@HnbEipuqywOYOQLIAyS zC3^^mI_-_d;7j?DqD@8r;GDV&ZRxc-lgFWqS@oAL+2fE$#;k$!4wIxaqG=h|SjYay!WWs4+kl**oQreU*nR?iVV`CbkzqBg;c(R*(Nprnilihwk+aUN!XS_<&`qK} z1OIHz@7@;aC>|5j6S&pC7S5=Ribo! ztwsA%j@lvRjJr2Xqh>6&BzbOUGJd-05Ke%yLGBTEoQ!<1kRpZ{enEo5jaZfht-@e9 zN-oEZulH-GmqM;3h&qMo0HsK`H&Hg#30ftJv^l^k3d`m{hyU9C-!^D*iTf4K&?*9k zqm*)vp@psG>g00ILDV@+2dG6}y@?8`H(x=hI8xF|RFwU1-v3_nWlItVQ>6_*0S7S; z$1XdebUP1Y<*zMWnKy_P!VG7OHOLfYh}FjwVhGpwuZQLrSI7{%k0rzuZV?UDI)bp@ z25p19Rj|R!#npIky5d#u#Haad+GlWMUyUmk=9P%LmdK()^+eTA-7U?nKTa+jp2qjP z=Z6iKETB@5mPFUb90Szy8`@p2maVN#92?8CVcB%gWjO|t3VP|bx+}U}b=UJY#;qMkeY zmUGtDSm^4lZ3ZA`4^plGEt^~%J#1ZJJB6~rF<|L1H0c%%Y9%5YH7f>a+@3;>{Wn0` zKwVp?aihK5)fx*!JX;%N?#1exe2i^hUk^P5~39Mrz(7wT?<;=jd`}b?oUY0{t8qm z2-@g)uvgh;o$hFi^zt;CTCq;*$JCo6Z`|z8nn#8lh%=Z)>e5{f4cG`WBxAOu(mU0* zBVyKj|2d|yhjg&SSeRV(KdsF2sHjKjuU*MD6D)?^oI07$&r-|B&nm3!qn&RGHz(&= zk2#eIYQkSg3UlJk(_M*l@?;$Sk2}!G6LA!F-VXI3`1s0oJOwfM{fnT^5AGMa3AmOh$1l-g`f9jlo1;>Fj;#;>#A>w;|lxs46`cz5=^ zLEL6w)cvd`L?D7E8$@LG(G*_%6~@``QMMUNKfPt-RbGuYq!F=4J8+$}`y}J&Rmjz; zoC!ZKV};H>=n%Do)yEuS4A-fVdG-t+9C-JuCIxi(qlf?l!q($HRcp3wsbxTtCz5gI zkj4uhRztLFA$KxB-8U3b6k1F8^bMkfq6U#@VGZdWVOEqzgg=-8Nt&oSibY*kT7B=IvU172Wy~Gim<@aiIcM?$JhQ=;&+~SJ#5=ht_ z_BfsKQpa>!hbf%>*QMW@c=X+)>HAqP^cG58{usY2WwrenSx)C!wXQ;NkS%={Oa@u2 z%=sp2J;Y%5&~&@ZwD^mH&-Tx@tX=2n>2<}GlvM8ab?U1O+l4OuH`xhs@F$X3ZoP06iL`x|tk@S|nhldrR@P z%>b(!t^S22ANO_t{Hfk!g8>2tsOS$RQpUmU-(6|qyJDR5=Bo3FN4?)3e<4Q|9+rH6 zM0!>UJi_7IYl0V@JgC&TTBM~zLR9j$nvcV|&l?=U@t7ns+H?t4=?ABe8qKJ3h~Sz= zX^h87C79g}&*0W_ANawR4V9J<47nvra_`7z8=N-;udXl+k)Mt)df_d+K0cVIxSl>G zuGodDJq%M{3uRy$l(0cWDH+DoDihy zpiXMhiKe|IXaGBfO;P#k}=<7Q29nPMd-0zy& z5}x9187CbJ<&{aLmneb%*S-*7iGx9z9+5V&a?fzVa<#*<-7?3I$_=v^@6U2@h(eIJq7m*@dg%;)DS;F-U{{%~!hoqibd`Ec@tl`?&9 z_A}25^x0|VBGUC|NgHFOoDbsu&#`KkI3LQ{i1tm{+_Q^GO2Li4GaDPR{N{vEg>Jzw zZN2Myh8K3OimeyNsl4y0fM*%QHXmR^-h=?`zSOKyw#; z7vh0ub-k~iPZ#M{Adt3;oUfCtq%*Fo6Yvm)S4Z1+4}2Zy+D{2Sy?s8|I1(_t99Y~b zd=^Fn!reT1o!@;{sN3719^w0J@xFQuwk-eg2g2{z{6vUfRT8PAL9=_xT(0RyW)AYt z%3Tc~v1nF@2IyLDs0LCL<(87-s5F0&+UVt35syC0#XaXEyQ~VF_Zh4TX4GMuOkq3lY(8 zyKc)0fjESLw{_@r&|Q!-j`rKAkBMl}@s7$%Dg?Y#hj)tU@qZ-OAV7BQ;=GI zmj!wma{L>>5A=~M)LqdFV|d4M-+?w;Jkt+aLSP$Wa_P5xRQnZh=a%GDd_I!ud%Yaa zFeqzu#T^mA7vXlx4BLRVZX%3hZ?nqZzMjox*ENoZ$oysI zId~S*h5k%?HX(<;4RJgOec0lf6X&cBV&Bue2i*u--c@b*$VS`${`@V9z|lE39ea$V z6|fmX5X^uQcsl)abrAZ{7xH$i`w5ebj`ed&I(;gmSd{O>)p%3K)fq)^t08|&Vu@2K z(e1qyza#h_lmnfyv(g7({18Dt}Ky@frL$`(?iX z-?Sd3LO2>>b(LdSy=k;umDF-mzLDK0&Q@%XoC7(Uu{G&fH={I#QJ>hbs;)9i2>m3$ zNA^9%F<6i5neu+sd;zg~_XWY|36sZ!vDCM{-!7$6KX$RiN9jG#Rs7x7Gn$}bVZq{u z#IAM&#q{Gmj9ndgwGd+&?M(h@-C#W|PM!PwtwhR85l2;Lm9b4ZWuC?g%W&kM-9Rbx z{I+>yW9f~`C92sXf3rg#m(U0Ld+ea*rDH`G>5WBwW7!ko=)%ZTmE%9+d$P|~pQbyO zyLsfSr|B*~S`k_wT3lOSboHu!mrpc~ERejK=B(3kj+~ijC7XoO4U5^8Zs@R*g4r8J z?i-VEWAQ$X#Q{q*)91=++ugJvc#7=$P}P>7rN|6VQ_U)FN*x4B7DIXUw~yGZ0D zwhl|H7ttyaZ`dHPZhAz0Ofa=YjOwqzvlZ>!*K>kBqmbIVQAjyK`0N6!%6OyGajX;` zYBZcYl0ftsLXv>MfA}a?DC1t+iq81GjNbabF2U1wC9%<*&YcS&%|#(c ziJB6GO|ddg{!-^a*OD`EG8TRgiVF?PT7w)2U9Tpcx+0aT-eMcHR`a88M2sA-Dr2)) zbUf(qtpF!}<&u>o?7R%C|Bq$4RbZv7A#1&%;Cv)d@MlH1A|vCWElK+_g<07#51mq$ z7R@^k9C}AiaSA~Zdq-y`-3*X0%M3^;L+HVCN^l+!BKd14{7o>n)c>1e zmLeEdg*jC1&1RyEUlk+K(W65wA~BVtGvpTz>`IszYwew!jOjdI>@*2rPbzlHd&^azHCYnHnUU9^Bmq zgVEN4&h+mlXLc>zn3T4eKwROuV(^bkL5V{i_jWL1hc2lO>a{w!Iy6|< zoktfT2Vp8yqZdUMZ&H^n`uS?B&j`9Ld~#Qc!hH$_t;>c>ho&y@w=i-^b7Ue(V48a> z+SL}rfbXH+KC}?%iyw2hv=8V9>J_mAq{FXE|EX`6-_$UW+xn|awx7YyQlo2P<%P~G zANV%fIv}#1JoJVJ&(ha*G)Omb{Z?x`T^t!du8a0ro*uh%{JTJMK;&yR&JPA;@AWe1 zgxAJdth`!Q8^lyTw zVHh=~{*x=Ve;Ey?b|(K83p3k)FCcL{V|x=zJ98pN4NE&=JAmc?@PJ`dwO6yV{5oq& z#QYC$<10Q5OA}`c0Fe&+S04U9eE%0%h?9${D$v37E7-3s(Z4j1f8Y{M0B2DPL#HpG z2@Ip0;eQU;|5M)o)Si>2gR{L85%WLQ`oG{p{$H!%zk@>lA)@@x#vm$8^u-}jQ2g=F zPDPl=%+Ln#l^|ooe~yKvRsM&E$dCWKb^KRq#oe7HRh$i-zpND$|A(2%4?}?UKbCf1 z-u4dv@&50zbN`=Wcm67o{~wY6*Jb~E-2eLix2V6sGyg5)|0jkA#}_K+e?g=)XspHH za-w)IY24+5Y2wwnL&AYx(@WLJx7T9$TtUEUk*+zhv4%_3qaK|#M>LzsCbHX_5YC^P zX<$aG9nBxaLSMR@gE=pXHtQ&Cx-KOMQUJdH<}p{L%w*eG-y`oJ18#<2aJH{GCq({S zTs!c&-MX*O_&Z?-XxzNyD7R}))AjlcaU-;+RKQG#90=&t^y*f?pndajj7_m~T!WVX z^qrZlYIDDRy?MFbi@a2SZ98zS{Q!JE9Ym%ua;M<5a3X8&4J{yOmVi)t+G_96?2)Bq+Z#5ai7cN zPaNbdoOk)&ZzpLXh@j)g{V|omSMtxDYrVSkATxx>=B{pR4vXB{HeNgk2`=rH>P?;} zLJ{mWIG0{GoDPd=J+5DU8mPP30T5qm2~@VZgVxlmY=)l>ksp@QDd>7W`D2pn9-J!I zeQh`Qrb@NxCnv=#x`T*rqUf(_Syf{%5S*>iV<*tTL=5k^-2`}wnf$-O#xm8Y_4lW6 z>-Ie)bfytV*0*--`APHVAlhGjdec}o_>phWt=^)#2;1DcZZ7IFxJ-&ExnM}!%0FiO z&YKcADK}*YDi(!_PKr1sz@$&4QCj@kr>2x>=~}z;%kd5XIGhvz1gg4b@c5XGBVB%IP4lI zzWIBslzt{MD!KtkNM=`u&a;U2x4p^xQ$as2)cyZLz8!&<=;n2HfQlnU`4{Y%|H z_ZLJhO`dcY+IYE78(HSxo+y=EIU*EhdH7WHl_=Jc_J`t%hl)qfsN$D=Ko-WKEIlYwn|mk&m`BM$!gT zPAK~{rLgkff2|-a*nTJZK?bIt&jJZ6aL6RGGY|^Q2GfPi>loOG5&27n*1r7$%7ocu zj6aAuU7GbjaYxm{$I`>q#i)AP_HVhLqYxTn9j)Xus+j&sN3QF4#?6)tg}Xax z`RmiMX2a=gI2ZIs2HmnD7iEsVmFUDvJX?2nr`frl;Bv{JSj<5?=J}u@3y>R})>(Ag z0xzxVpZRfBedKQKr{MeNqh0@RZB~yq?h}Cb!$d}#qJ3OEBRyWTm~oC@e9!3ZBoPHp z>;l3^#N75Or4IDBYuL#)?r>g(+2R>mRLGO0)E;Sq1x4VkP+Yn+x0#)B;69kLR89FanOMvKGfF zTlF*k`nK?RD75_gX-Et5h$|uUiesn2B6F%Ud~KDuImy3-9S?{ZNho(|&JB#>STxv? zlwZkYyoIZcCUWy;GN)O!@cEkaC9}hFU!R1SlLkW>7lVbL70@ZO2il0(wmtzN zf1%RywMOd#rHKztZ}k|_pU6@+PQsOE8`AfaK*0fWg5f6-{O5_ znb}K~=k;i}dh|?7;<;zh8iAD02T zE==WQZG9{$%V21w6PeLzyfAT#Y1b5=r*SI9`-urHq70oP|2oA9P(v)h0-xW$q6GVq zKV1e~0^XEYZv!2+n@s!!@HfhjTcM`yaXzBj-2T0(IYDq9;Y$mG?ZLe+f#{>T)^Cxi zy8>sUJaisJ3N`O#zgHw0mP|!AndL5r#zLgYGsZ;N6JZZ^ja7ycUEm$>Xw2gCU4n`% zEPCe3LFobW)>hH+FY#1?vYLnCL=T!N=A)dGY5)Y|FQpvU5+mAVAvs;twl_U!Hnf}H z3P=&FNtw_RnaXDVuTnZylV0{%^#_w#wykiAv^pCWxR$8B1?aIngLNtxj#5==3YvrW zHPwJQZd7x$2}j7#MXel}gL-oL@5_FA=We*?99ywiK6Ranl-(intVY2UDKNBvkw$nT zR0B^x%L8j{Yfz*f7{brS(K?SX{zPzV)Dk%PiDG>}&3{_Nlk!-GIC&D>M4qt1w z7`e(UEACw#q`L_o9lJLMI4LO`;6=f!GQiPva?+d^&tismFa(L?~@zn3QX zaV=K#NX}_Fns9@;nk41+xpC!-legMdb|(v542_vuq+c<>@a07oL{hsAd123j&P341 z&)IgO5n*;JI$BK^ig@M0!f>oObw^u$&e-HynT$K;U&Gt1Oxa|ji!gqEpy|l0&WffE zlQs=kZ&THP%Vfr!ICo9rnXS;0;Bk3;h0#`sprABje)9B%kQFY`G zP>f`A!upYQ<`s{aer6iOIyfs$an2nM|3V2<3T1_D{t<)rlwC=UK0URN2r93N5oHz* zfIF+VtJ^<%FTQ7Zx_EcG$93BFX=x)HuWlM!TRT@pcfwueu7C^(|DHGV-6zao5VAzP z72%h*WmHRhJf#>81SHk@7UbQvjIa=HKYl>RIQ*^sr{j1_Bl~xDz6h}(gBKo=0VFUi zR7Qt*>-@Z+Gu^|AT@MNX0nzVOUp9(%Qo06K^Vo2K>-)gy%6xey#VRLfDVr)7ogiWI z-{WYnQrzR3=yoIs``;j6pdgLHKuZLqxUR4vJL@=ig$Q=LIUSKs%e=^f1tof!t~5}$ z|4c)OgwL$pDT?3fdT>E`*>_`;NgXBvHol(Y2wVs(qj=_!+k=RqeW7O{J8Ane=B8TE zy9#BCd=bKe`V=aOwl zIc(?JZR@P5ge^`&oP$S+p`cN5C@T+_b+(m@HqD&M6qC$0U9EV8em34Ohhtg{iy1?L zUas9cwSA&VwYGHX?#bOA1xjvKC`z&6of)uS=dsEiC}nc~NaaO;L>eQAJ%}|<|NWSV zPbJ-|i=L0w%&kT<@C|>dydUqZuh^iMlWTNUeH+4GU6J~lx4lCG-l%EyE#)q6MdO#lRjMLHYq_80D&;fgZ<@w0j3Uvcm`2gm zIAtv}2&ZtW@8acKLbR_U2iyj>)TR<@7|Lm-ZR9kp${G;(N!Zs=zt$!HVD)bMo~N`q z;kBTL+acXwKgJD^yAuzgpP6jJ-H|5qq_HGH*t&sJ32k&>5F6-)g? zoW@24sESUbq*RJh!o-eVQAb3w4B|~<#zCw~K$0#bwH%;P#%B^8*~T?R4HW6AKf) zWL$1smR1cmSpI{)V&aM4)$Iu_%K&O{i0XGH0vVOOWqe8k)d|qpzZ*fslF)$z$;+8# zA&^?PM9U!5Y^lM}T}F8b@UwNpjaKsS^Tc@&-#oD3u(rraWZB6A!g)yYW^%M@(x71Z zOV!ViugBg~+WKx~$3z(RkK0|Ye`m1yU-YZeK@EoVf=z*N<`Svr8q&b#VWGvNqja$O zTd*zBjSD*nDyXV1hXj|J2{QrI=?tFPVH@uhdr4Ry0!0@s5=m221My~t^_#ZVGg~bM z6@EQPvK5bMf7;7`a!yzV6Qw$U%nmaoz%n39?|V?TNnuok4Rck?noJO`c>z3OP%3*8 z)O=rdWX?O4BRu+3V%_ntJX#|NB3sqZ1wsj3AN{60+dB)VNcDdvhv!@!#3bkXS{&MH zA0nA`w(RNIi1mn(jGl9>woTW5_(@5h;RT*@>QLPl%zv7xUY2`903}J_z zb5^ZqyJ3ap0Nwc>;PCEB5z+q5u_;PCwQLOs>x&11M$1NmSjhI9M!l|z?E4N5(J90d z#>7ifq#0PzXmB=>Tj+Hiv51=3?{i>dJ+hBBs}kweQ$jkE-~OyINhG^TzzB~~9Uwj(6S@%eB(eGkC6uqvsR37jwkeCnm<1-}P4_k2HrwY2tf{JKV zRH0%t**bJ=eR*LxHQN^id*YGeC+s3iysR}O805ltC}BD-9qAJKtQngkMAaNzd)0u5hE*>sk9wzA!qUizEY13SHelX5Q|YaN^}-ag1I$p z(PY%iqJYV21wo%Whz#>nv?t|QRB0%}MU9x2%Ka)_ahQuV8Qr#`B==ihE3CK-$>0h* z20J)XaR2Z9^&XNl_Wl5B-rhX_f5L{1wl&+^N)(e<*a7t(4(bH0?4R=wMjrF8O~X=G z6*FRsob<;U%WRb$XM-a(^%r0U|D_oELeUl$goNA|u`ec9D~M!_t&DF(_U0lk2M={O zD`f=L$Zu4anE%$xM!266g3$D7rVr$iwxI+w z+3Z3E9)u)|C+p}Br-KruNuJtz@vA*Xn;eVXBMvJk%dujIE6M=vz2m0!FHsOMb=Z;%sgFfb{ z(x^fL%N$czyhB&#GVKjTgHmyE7FYV!*re1WTuH%H_{5+HPl&KI0c#T!emz;CJ=Pr| zx$1=R?k22jm#THz`8K^K_$CPu-v;-Tgzg{xp{wA&9BnUevPF~Ixg)euhbZ0SbfMF8? zzNUF1@#Ak=Q~*KG5z@^X0$k))RdR7AE0!p7*=VX_LNC$!T(WR!;t~UE;JV5D}^24s_8qBD=Nyjgs|Hr7VSAf=K zwA1b`>bR?YWz=hV$BLbwWJ!&-p2s)Xu%L{ILdY6FsUI)9-~5|9(xN(+eWIb*VLfZ# zagG$eqbRv~deuM>t4ljtdevay6EDzn3;Z6T8o{b}Q*53X_;D&ufreEBV8l!z;~pL0 z%R+E+%mAi=2kJ)o$WGn1o!v=m7$S>1RB>RAjd*ya-}YR;X)C+$viv-&g91}*!KUl; ziG8u=mkTaGpTL01C^u|Q@zF<|n$~b`PRyb=*L5wUX97w86+pSbUisP%9-XzZuHRN= zYj&E!=Z5iJr-(HJpk*wj+HIQn*D1|ET$dzcM*~q-0>coS(zVnE%jDI*3W*%-M!vFi z-tO`2IORVG+soBMAud+rJ&GaN=8_?jh zIq;xbHZ7;vQB`D#P|7gg?Zj29ZS}#O{5g$KFZwJ9JDzQPQtc8!d$%!?1!PRpht)g@ zhE)Z@t|HXD*(mA`c(IE229JaxuIW$nhPLiW1DHH0q--T}3agio6TxA`I{2iQy7Q;j&)r^oR7dFZ0sj4r@ap%5%axK<{ae!7^D~bZ9lW~3G2UAR zybm`2s(7<30Y5zfeSoiYq#@yZ4xTocc_PNjo4e@N+rAsiAlRL$qvC|sb5TbKXxl)F zx2~!T?k8eZh3ehaV$!`Q@%dD}#nW1#&7^K2GjToK}sNmZ<3|Te7<9 z>?l!XS;53J-bA2Iff_@|&v^A!B;LRV>W}yangFCiHFEX2m|5!J8NjNHf(JA~$%3|S z7738H%HwjQ0i}5nMI%x`<-wcd=L?e@D^S9)RjCfEyKsZ|Z?Dapxzb`ck0GY@oL^F8 z%h>;(-@+JrGcV-Ay(jiaDB#RshidGp9 zKq)PkfJFoyKol84!3zXI#RCNq!~@U>o+yX{O5YNs5dEY3N9Min{Eqj2zxQ@B`OKuU z?UCeRg=bk8fih;e<-{fwn-!FvDlyz_zo7bdc|&2#+N@)vmakE{-#M)4NFBDPgIPb^ zJ+zkj=r24jVa3YWnpLx$_f0R|y?T7j^<{tL_DDzan;VQ~j2Zi?X@B+h9l`nf1ryd- zfbS}uqu1DaWYj-;`%3ktJ@(m>BY}$Oq_f2@7}??^|CmsRh@pPHEx$YFCi03is7^`%x#~Lm9W97%g|s)LZV1+9TJ>> zspi_}=KM(UF_-Y0!9gGQtP3c}EdTLyNKop5+;{3bo9e>jT~yB}#^QMoN?vq3iQXJ% zdz8dn$=KrD_Ws!~QB(CR8^c$8ROJghCspUC=S80A-2dxbafWeY&3NWxfjZDs+>?^s zthYOTMo5#5bKu_NdnD@5IVGyx%U9GFZq;?EM(&IJ)6by*{_yO@K}Dj|ncC5jlyN$R zG)+!TEKRyc>7MHfSy+5;_PbAH(3~kraOm~G@~um5)xBvu9eHzS9yj5+>!)$4;k#X< zPSl8EEM~qnIu>QO?nWLv=5@!c;GT~&uV$pB<5PA$>{zhr!Q9wtw%mP|ITQgY)J2De z>+a)+edsv({@qi3W}3t5`16-HODd(pyzh)aPcMKz66i`F5V zqxOonlqkH?R@(^|tuTDT5N$Gz6{FGsb^Wrl_1TFw|7-~$Qqp#2n%r1CqTzV9Lbx`% z(HWkYg?r-612U3`zS? z@#T9|k2MfyxDhJSPbnr;kdBp=2H@?lLdM}op7IE6#~wtePecY=bvEL;S3kc9^kKmp9v&xbUw_U;IT z^yRj92kB@K)SHeD;h~gmSV{&!UNocOASlG;p&*7ENdqR}2gsv_I=SFJfDrLXIR!AJ z3ZO&H23&AuFP7BI90`dG|4ukQ*w?o*$luQafqy?5TP~9Tu18nd4J_rq^eQ^P9}Pk2 zVtsW*=~DLlYOML7RKBDSC@5I93epsNpbt9G$B~o>=-rwK7NIc0fq4i9J~;?$0gM^5 zU}JzU`APz(WTgCm*#SamvQZ+Xeuq$V7=_Fre}8}TUcp>UZUE6hn5qedWTQQWrltcn9-t(oIxvK?bO6Qedms*mu`oyq zX*7(*qB~DNki1XR%(U!K9v7SnZ9AH@4%WCB3!qOe4P}A)4%T2US6f2>Yz9>yWQQOe z9%%C*4d(LL+Pp^+hm?fsY78HTG+P-WK zi>tjBHV1>j#T*=u17N0>2KvGMR%4?BYELO~nJ=N#>3x|v$fYEN(q|RCHyi|zmlZ1J zun3+MhjE@nEb*3th?ZP$F(DSSP>uw{t*vmWHw!^Igf}i`W2hA2abc;Y1Vd0u6hpZ% p$GZ1+lN8i@Z$MmkSr9>=B5*xa6t1Lt&lTu1is={`EpxWh`4>q160 mm of Hg & Diastolic >100 mm of Hg ) .....................................","8.2","7.1","",""], ["Very High (Systolic >180 mm of Hg & Diastolic >110 mm of Hg ) ...............................................","3.7","3.1","",""], ["14 Any anaemia below 11g/dl, severe anaemia below 7g/dl. 15 Excluding age group 19 years","","","",""], - ["","Chronic Illness :Any person with symptoms persisting for longer than one month is defined as suffering from chronic illness","","",""], + ["Chronic Illness :Any person with symptoms persisting for longer than one month is defined as suffering from chronic illness","","","",""], ["4","","","",""] ] pdfname = os.path.join(testdir, "missing_values.pdf") - manager = Pdf(Stream(margins=(1.0, 0.5, 0.1)), pdfname, clean=True) + manager = Pdf(Stream(), pdfname, clean=True) tables = manager.extract() assert_equal(tables["page-1"]["table-1"]["data"], data) @@ -106,8 +106,7 @@ def test_stream_single_table_area(): ["(each day of the payroll period)",""] ] pdfname = os.path.join(testdir, "tabula_test_pdfs/us-007.pdf") - manager = Pdf(Stream(table_area=["320,500,573,335"], ytol=[10], - margins=(1.0, 0.5, 0.1)), + manager = Pdf(Stream(table_area=["320,500,573,335"]), pdfname, pagenos=[{"start": 1, "end": 1}], clean=True) tables = manager.extract() assert_equal(tables["page-1"]["table-1"]["data"], data) @@ -164,4 +163,58 @@ def test_stream_columns(): manager = Pdf(Stream(columns=["28,67,180,230,425,475,700"], ytol=[10]), pdfname, clean=True) tables = manager.extract() + assert_equal(tables["page-1"]["table-1"]["data"], data) + + +def test_stream_table_rotation(): + + data = [ + ["Table 21 Current use of contraception by background characteristics—Continued","","","","","","","","","","","","","","","",""], + ["","","","","","Modern method","","","","","","","Traditional method","","","",""], + ["","","Any","","","","","","","Other","Any","","","","Not","","Number"], + ["","Any","modern","Female","Male","","","","Condom/","modern","traditional","","With-","Folk","currently","","of"], + ["Background characteristic","method","method","sterilization","sterilization","Pill","IUD","Injectables","Nirodh","method","method","Rhythm","drawal","method","using","Total","women"], + ["Caste/tribe","","","","","","","","","","","","","","","",""], + ["Scheduled caste","74.8","55.8","42.9","0.9","9.7","0.0","0.2","2.2","0.0","19.0","11.2","7.4","0.4","25.2","100.0","1,363"], + ["Scheduled tribe","59.3","39.0","26.8","0.6","6.4","0.6","1.2","3.5","0.0","20.3","10.4","5.8","4.1","40.7","100.0","256"], + ["Other backward class","71.4","51.1","34.9","0.0","8.6","1.4","0.0","6.2","0.0","20.4","12.6","7.8","0.0","28.6","100.0","211"], + ["Other","71.1","48.8","28.2","0.8","13.3","0.9","0.3","5.2","0.1","22.3","12.9","9.1","0.3","28.9","100.0","3,319"], + ["Wealth index","","","","","","","","","","","","","","","",""], + ["Lowest","64.5","48.6","34.3","0.5","10.5","0.6","0.7","2.0","0.0","15.9","9.9","4.6","1.4","35.5","100.0","1,258"], + ["Second","68.5","50.4","36.2","1.1","11.4","0.5","0.1","1.1","0.0","18.1","11.2","6.7","0.2","31.5","100.0","1,317"], + ["Middle","75.5","52.8","33.6","0.6","14.2","0.4","0.5","3.4","0.1","22.7","13.4","8.9","0.4","24.5","100.0","1,018"], + ["Fourth","73.9","52.3","32.0","0.5","12.5","0.6","0.2","6.3","0.2","21.6","11.5","9.9","0.2","26.1","100.0","908"], + ["Highest","78.3","44.4","19.5","1.0","9.7","1.4","0.0","12.7","0.0","33.8","18.2","15.6","0.0","21.7","100.0","733"], + ["Number of living children","","","","","","","","","","","","","","","",""], + ["No children","25.1","7.6","0.3","0.5","2.0","0.0","0.0","4.8","0.0","17.5","9.0","8.5","0.0","74.9","100.0","563"], + ["1 child","66.5","32.1","3.7","0.7","20.1","0.7","0.1","6.9","0.0","34.3","18.9","15.2","0.3","33.5","100.0","1,190"], + ["1 son","66.8","33.2","4.1","0.7","21.1","0.5","0.3","6.6","0.0","33.5","21.2","12.3","0.0","33.2","100.0","672"], + ["No sons","66.1","30.7","3.1","0.6","18.8","0.8","0.0","7.3","0.0","35.4","15.8","19.0","0.6","33.9","100.0","517"], + ["2 children","81.6","60.5","41.8","0.9","11.6","0.8","0.3","4.8","0.2","21.1","12.2","8.3","0.6","18.4","100.0","1,576"], + ["1 or more sons","83.7","64.2","46.4","0.9","10.8","0.8","0.4","4.8","0.1","19.5","11.1","7.6","0.7","16.3","100.0","1,268"], + ["No sons","73.2","45.5","23.2","1.0","15.1","0.9","0.0","4.8","0.5","27.7","16.8","11.0","0.0","26.8","100.0","308"], + ["3 children","83.9","71.2","57.7","0.8","9.8","0.6","0.5","1.8","0.0","12.7","8.7","3.3","0.8","16.1","100.0","961"], + ["1 or more sons","85.0","73.2","60.3","0.9","9.4","0.5","0.5","1.6","0.0","11.8","8.1","3.0","0.7","15.0","100.0","860"], + ["No sons","74.7","53.8","35.3","0.0","13.7","1.6","0.0","3.2","0.0","20.9","13.4","6.1","1.5","25.3","100.0","101"], + ["4+ children","74.3","58.1","45.1","0.6","8.7","0.6","0.7","2.4","0.0","16.1","9.9","5.4","0.8","25.7","100.0","944"], + ["1 or more sons","73.9","58.2","46.0","0.7","8.3","0.7","0.7","1.9","0.0","15.7","9.4","5.5","0.8","26.1","100.0","901"], + ["No sons","(82.1)","(57.3)","(25.6)","(0.0)","(17.8)","(0.0)","(0.0)","(13.9)","(0.0)","(24.8)","(21.3)","(3.5)","(0.0)","(17.9)","100.0","43"], + ["Total","71.2","49.9","32.2","0.7","11.7","0.6","0.3","4.3","0.1","21.3","12.3","8.4","0.5","28.8","100.0","5,234"], + ["NFHS-2 (1998-99)","66.6","47.3","32.0","1.8","9.2","1.4","na","2.9","na","na","8.7","9.8","na","33.4","100.0","4,116"], + ["NFHS-1 (1992-93)","57.7","37.6","26.5","4.3","3.6","1.3","0.1","1.9","na","na","11.3","8.3","na","42.3","100.0","3,970"], + ["","Note: If more than one method is used, only the most effective method is considered in this tabulation. Total includes women for whom caste/tribe was not known or is missing, who are","","","","","","","","","","","","","","",""], + ["not shown separately.","","","","","","","","","","","","","","","",""], + ["na = Not available","","","","","","","","","","","","","","","",""], + ["","ns = Not shown; see table 2b, footnote 1","","","","","","","","","","","","","","",""], + ["( ) Based on 25-49 unweighted cases.","","","","","","","","","","","","","","","",""], + ["","","","","","","","54","","","","","","","","",""] + ] + pdfname = os.path.join(testdir, "left_rotated_table_2.pdf") + manager = Pdf(Stream(), pdfname, clean=True) + tables = manager.extract() + assert_equal(tables["page-1"]["table-1"]["data"], data) + + pdfname = os.path.join(testdir, "right_rotated_table_2.pdf") + manager = Pdf(Stream(), pdfname, clean=True) + tables = manager.extract() assert_equal(tables["page-1"]["table-1"]["data"], data) \ No newline at end of file diff --git a/tools/camelot b/tools/camelot index 981fd5c..408a898 100755 --- a/tools/camelot +++ b/tools/camelot @@ -34,7 +34,7 @@ options: -l, --log Log to file. -o, --output Output directory. -M, --cmargin Char margin. Chars closer than cmargin are - grouped together to form a word. [default: 2.0] + grouped together to form a word. [default: 1.0] -L, --lmargin Line margin. Lines closer than lmargin are grouped together to form a textbox. [default: 0.5] -W, --wmargin Word margin. Insert blank spaces between chars @@ -87,7 +87,7 @@ options: -y, --ytol Tolerance to account for when grouping rows together. [default: 2] -m, --mtol Tolerance to account for when merging columns - together. [default: 2] + together. [default: 0] -d, --debug Debug by visualizing textboxes. """