From bec875b628997a6c5fa2d0b658e769cb9fcc06f7 Mon Sep 17 00:00:00 2001 From: alexander1999-hub Date: Wed, 2 Oct 2024 13:11:58 +0300 Subject: [PATCH 01/16] added gost frame recognizer to tabby reader --- .../pdf_txtlayer_reader/pdf_tabby_reader.py | 22 +++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/dedoc/readers/pdf_reader/pdf_txtlayer_reader/pdf_tabby_reader.py b/dedoc/readers/pdf_reader/pdf_txtlayer_reader/pdf_tabby_reader.py index 5d55496b..3add6f32 100644 --- a/dedoc/readers/pdf_reader/pdf_txtlayer_reader/pdf_tabby_reader.py +++ b/dedoc/readers/pdf_reader/pdf_txtlayer_reader/pdf_tabby_reader.py @@ -1,3 +1,4 @@ +import os.path from typing import List, Optional, Tuple from dedocutils.data_structures import BBox @@ -79,12 +80,29 @@ def read(self, file_path: str, parameters: Optional[dict] = None) -> Unstructure return self._postprocess(result) + def _save_gost_frame_boxes_to_json(self, first_page: Optional[int], last_page: Optional[int], page_count: int, path: str, + tmp_dir: str) -> str: + from joblib import Parallel, delayed + import json + + first_page = 0 if first_page is None or first_page < 0 else first_page + last_page = page_count if (last_page is None) or (last_page is not None and last_page > page_count) else last_page + images = self._get_images(path, first_page, last_page) + + gost_analyzed_images = Parallel(n_jobs=self.config["n_jobs"])(delayed(self.gost_frame_recognizer.rec_and_clean_frame)(image) for image in images) + result_dict = {page_number: page_data[1].to_dict() for page_number, page_data in enumerate(gost_analyzed_images, start=first_page)} + result_json_path = os.path.join(tmp_dir, 'gost_frame_bboxes.json') + with open(result_json_path, 'w') as f: + json.dump(result_dict, f) + return result_json_path + def __extract(self, path: str, parameters: dict, warnings: list, tmp_dir: str)\ -> Tuple[List[LineWithMeta], List[Table], List[ScanTable], List[PdfImageAttachment], Optional[dict]]: import math from dedoc.utils.pdf_utils import get_pdf_page_count from dedoc.utils.utils import calculate_file_hash from dedoc.utils.parameter_utils import get_param_page_slice, get_param_with_attachments + from dedoc.utils.parameter_utils import get_param_need_gost_frame_analysis all_lines, all_tables, all_tables_on_images, all_attached_images = [], [], [], [] with_attachments = get_param_with_attachments(parameters) @@ -106,6 +124,10 @@ def __extract(self, path: str, parameters: dict, warnings: list, tmp_dir: str)\ if empty_page_limit: return all_lines, all_tables, all_tables_on_images, all_attached_images, document_metadata + gost_json_path = '' + if get_param_need_gost_frame_analysis(parameters): + gost_json_path = self._save_gost_frame_boxes_to_json(first_page=first_page, last_page=last_page, page_count=page_count, tmp_dir=tmp_dir, path=path) + # in java tabby reader page numeration starts with 1, end_page is included first_tabby_page = first_page + 1 if first_page is not None else 1 last_tabby_page = page_count if (last_page is None) or (last_page is not None and last_page > page_count) else last_page From 93fa2120ee2c058e979424903378a52139a2e8a0 Mon Sep 17 00:00:00 2001 From: Nasty Date: Wed, 2 Oct 2024 16:01:22 +0300 Subject: [PATCH 02/16] TLDR-765 small fixes --- dedoc/readers/pdf_reader/pdf_base_reader.py | 3 +- .../pdf_txtlayer_reader/pdf_tabby_reader.py | 35 +++++++++---------- 2 files changed, 19 insertions(+), 19 deletions(-) diff --git a/dedoc/readers/pdf_reader/pdf_base_reader.py b/dedoc/readers/pdf_reader/pdf_base_reader.py index 101607ff..ff2c80c6 100644 --- a/dedoc/readers/pdf_reader/pdf_base_reader.py +++ b/dedoc/readers/pdf_reader/pdf_base_reader.py @@ -13,6 +13,7 @@ from dedoc.readers.pdf_reader.data_classes.pdf_image_attachment import PdfImageAttachment from dedoc.readers.pdf_reader.data_classes.tables.scantable import ScanTable + ParametersForParseDoc = namedtuple("ParametersForParseDoc", [ "orient_analysis_cells", "orient_cell_angle", @@ -161,7 +162,7 @@ def _process_document_with_gost_frame(self, images: Iterator[ndarray], first_pag page_range = range(first_page, first_page + len(gost_analyzed_images)) gost_analyzed_images = dict(zip(page_range, gost_analyzed_images)) if isinstance(self, PdfTxtlayerReader): - self.gost_frame_boxes = dict(zip(page_range, [(item[1], item[2]) for item in gost_analyzed_images.values()])) + self.gost_frame_boxes = dict(zip(page_range, [item[1] for item in gost_analyzed_images.values()])) result = Parallel(n_jobs=self.config["n_jobs"])( delayed(self._process_one_page)(image, parameters, page_number, path) for page_number, (image, box, original_image_shape) in gost_analyzed_images.items() diff --git a/dedoc/readers/pdf_reader/pdf_txtlayer_reader/pdf_tabby_reader.py b/dedoc/readers/pdf_reader/pdf_txtlayer_reader/pdf_tabby_reader.py index 3add6f32..6951a39e 100644 --- a/dedoc/readers/pdf_reader/pdf_txtlayer_reader/pdf_tabby_reader.py +++ b/dedoc/readers/pdf_reader/pdf_txtlayer_reader/pdf_tabby_reader.py @@ -80,22 +80,6 @@ def read(self, file_path: str, parameters: Optional[dict] = None) -> Unstructure return self._postprocess(result) - def _save_gost_frame_boxes_to_json(self, first_page: Optional[int], last_page: Optional[int], page_count: int, path: str, - tmp_dir: str) -> str: - from joblib import Parallel, delayed - import json - - first_page = 0 if first_page is None or first_page < 0 else first_page - last_page = page_count if (last_page is None) or (last_page is not None and last_page > page_count) else last_page - images = self._get_images(path, first_page, last_page) - - gost_analyzed_images = Parallel(n_jobs=self.config["n_jobs"])(delayed(self.gost_frame_recognizer.rec_and_clean_frame)(image) for image in images) - result_dict = {page_number: page_data[1].to_dict() for page_number, page_data in enumerate(gost_analyzed_images, start=first_page)} - result_json_path = os.path.join(tmp_dir, 'gost_frame_bboxes.json') - with open(result_json_path, 'w') as f: - json.dump(result_dict, f) - return result_json_path - def __extract(self, path: str, parameters: dict, warnings: list, tmp_dir: str)\ -> Tuple[List[LineWithMeta], List[Table], List[ScanTable], List[PdfImageAttachment], Optional[dict]]: import math @@ -124,9 +108,9 @@ def __extract(self, path: str, parameters: dict, warnings: list, tmp_dir: str)\ if empty_page_limit: return all_lines, all_tables, all_tables_on_images, all_attached_images, document_metadata - gost_json_path = '' + gost_json_path = "" if get_param_need_gost_frame_analysis(parameters): - gost_json_path = self._save_gost_frame_boxes_to_json(first_page=first_page, last_page=last_page, page_count=page_count, tmp_dir=tmp_dir, path=path) + gost_json_path = self.__save_gost_frame_boxes_to_json(first_page=first_page, last_page=last_page, page_count=page_count, tmp_dir=tmp_dir, path=path) # noqa # in java tabby reader page numeration starts with 1, end_page is included first_tabby_page = first_page + 1 if first_page is not None else 1 @@ -151,6 +135,21 @@ def __extract(self, path: str, parameters: dict, warnings: list, tmp_dir: str)\ return all_lines, all_tables, all_tables_on_images, all_attached_images, document_metadata + def __save_gost_frame_boxes_to_json(self, first_page: Optional[int], last_page: Optional[int], page_count: int, path: str, tmp_dir: str) -> str: + from joblib import Parallel, delayed + import json + + first_page = 0 if first_page is None or first_page < 0 else first_page + last_page = page_count if (last_page is None) or (last_page is not None and last_page > page_count) else last_page + images = self._get_images(path, first_page, last_page) + + gost_analyzed_images = Parallel(n_jobs=self.config["n_jobs"])(delayed(self.gost_frame_recognizer.rec_and_clean_frame)(image) for image in images) + result_dict = {page_number: page_data[1].to_dict() for page_number, page_data in enumerate(gost_analyzed_images, start=first_page)} + result_json_path = os.path.join(tmp_dir, "gost_frame_bboxes.json") + with open(result_json_path, "w") as f: + json.dump(result_dict, f) + return result_json_path + def __get_tables(self, page: dict) -> Tuple[List[Table], List[ScanTable]]: import uuid from dedoc.data_structures.cell_with_meta import CellWithMeta From bfe914f23b05cf8021eb63372176629268878b84 Mon Sep 17 00:00:00 2001 From: sunveil Date: Thu, 3 Oct 2024 12:47:07 +0800 Subject: [PATCH 03/16] Add GOST frame processing to PrecisionPDF --- .../pdf_txtlayer_reader/pdf_tabby_reader.py | 37 ++++++++++++++++-- .../tabbypdf/jars/ispras_tbl_extr.jar | Bin 162243 -> 163090 bytes 2 files changed, 33 insertions(+), 4 deletions(-) diff --git a/dedoc/readers/pdf_reader/pdf_txtlayer_reader/pdf_tabby_reader.py b/dedoc/readers/pdf_reader/pdf_txtlayer_reader/pdf_tabby_reader.py index 6951a39e..6bcbf2a6 100644 --- a/dedoc/readers/pdf_reader/pdf_txtlayer_reader/pdf_tabby_reader.py +++ b/dedoc/readers/pdf_reader/pdf_txtlayer_reader/pdf_tabby_reader.py @@ -109,14 +109,21 @@ def __extract(self, path: str, parameters: dict, warnings: list, tmp_dir: str)\ return all_lines, all_tables, all_tables_on_images, all_attached_images, document_metadata gost_json_path = "" + remove_frame = False if get_param_need_gost_frame_analysis(parameters): + remove_frame = True gost_json_path = self.__save_gost_frame_boxes_to_json(first_page=first_page, last_page=last_page, page_count=page_count, tmp_dir=tmp_dir, path=path) # noqa # in java tabby reader page numeration starts with 1, end_page is included first_tabby_page = first_page + 1 if first_page is not None else 1 last_tabby_page = page_count if (last_page is None) or (last_page is not None and last_page > page_count) else last_page self.logger.info(f"Reading PDF pages from {first_tabby_page} to {last_tabby_page}") - document = self.__process_pdf(path=path, start_page=first_tabby_page, end_page=last_tabby_page, tmp_dir=tmp_dir) + document = self.__process_pdf(path=path, + start_page=first_tabby_page, + end_page=last_tabby_page, + tmp_dir=tmp_dir, + gost_json_path=gost_json_path, + remove_frame=remove_frame) pages = document.get("pages", []) for page in pages: @@ -312,10 +319,20 @@ def __jar_path(self) -> str: import os return os.environ.get("TABBY_JAR", self.default_config["JAR_PATH"]) - def __run(self, path: str, tmp_dir: str, encoding: str = "utf-8", start_page: int = None, end_page: int = None) -> bytes: + def __run(self, + path: str, + tmp_dir: str, + encoding: str = "utf-8", + start_page: int = None, + end_page: int = None, + remove_frame: bool = False, + gost_json_path: str = "" + ) -> bytes: import subprocess args = ["java"] + ["-jar", self.__jar_path(), "-i", path, "-tmp", f"{tmp_dir}/"] + if remove_frame: + args += ["-rf", gost_json_path] if start_page is not None and end_page is not None: args += ["-sp", str(start_page), "-ep", str(end_page)] try: @@ -328,11 +345,23 @@ def __run(self, path: str, tmp_dir: str, encoding: str = "utf-8", start_page: in except subprocess.CalledProcessError as e: raise TabbyPdfError(e.stderr.decode(encoding)) - def __process_pdf(self, path: str, tmp_dir: str, start_page: int = None, end_page: int = None) -> dict: + def __process_pdf(self, + path: str, + tmp_dir: str, + start_page: int = None, + end_page: int = None, + gost_json_path: str = "", + remove_frame: bool = False) -> dict: import json import os - self.__run(path=path, start_page=start_page, end_page=end_page, tmp_dir=tmp_dir) + self.__run(path=path, + start_page=start_page, + end_page=end_page, + tmp_dir=tmp_dir, + remove_frame=remove_frame, + gost_json_path=gost_json_path) + with open(os.path.join(tmp_dir, "data.json"), "r") as response: document = json.load(response) diff --git a/dedoc/readers/pdf_reader/pdf_txtlayer_reader/tabbypdf/jars/ispras_tbl_extr.jar b/dedoc/readers/pdf_reader/pdf_txtlayer_reader/tabbypdf/jars/ispras_tbl_extr.jar index 5dc90bf13c8ec8b932dfcb5f0bedc9e5b1f8cd70..b7400cb3dba9196f36d77b897b6c74dc37fa6b68 100644 GIT binary patch delta 88064 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%0D++I%G*BC%zDM` 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 z zcx5eUIOx*yBkL{^$Y9bXKmt8u#@eTf7C%|z2ECD$^K0&~Njwb1s2S*#Mel z6xGt?O~Md{)!yf=GIQQai&tzOz1EsjNTSZGn&JZv8Gz z4GomQX05@RUL^>RmxG3z=l*(f!Fvvz(V+xmRkqs&O^Xh61rd)}A|fl}+`({RIfUn_ z(GcwHU0|d%aSUNhorUTdy*v99$xKa8x7*78Kk5Po7-NgbhryJMa@5(K45yK+xsbW* z$cI75a1)*38pbrw98gG{gUNoh`HnE=eTKRwB?L#UckA+Se$K&zltOI=#^^^Fe;;Pp zQwE_t>Z*^=_@J0nuA%w1vM4`&&2V%X1P}2lB9*5ZE3o9PE%I{IycA7iI+dIw6q%HP z!Z>mojftSgV^+5Z8a9##rd+^(hl9>@cA10D{&NWr`a>|TsBr5t>q=r360tfuWVNq< z&oI#eIZQ5h;SC=M!m}IQ zjGv537}Q8f@D4dk*5~dmhAkUl0;jlrdWP=~0_mol43!uUyo0;qU<_A~%V?~P*iuE| z)lPvUhgfS5!_bWo&Rrj0L3a4!k!mx4Omo0Uj{HsG`Obrs2Y*rA$jFs{G0fcvAyI;} zq=X}u!pMJudvhVsr?uK(+IivV?FOvPg#g&`1nYAlic4TLQ}FE@qF}Ze!ZB_I4CW&2 zIhoe6eK=!XlF0|TT#y5adfLz0R8wDldloroKeaizoS!XG zoL>fx@#>A@?zH1PO45HBWt?A-bJM_KUT8PdEn}+*=rSEq5?XJ$3k}caxQl|g!IvEN zZ5tFkl?@YkEQnh}jh9IJZsjBs^=jQ07kUbpz#_LR&aG)qwd^LP?g$8`?N|r{VW;9_=fNN&7cDTvrY~9OEHW zbta`VoGf6X`YW5Uu*)T9jfQTD`V%#I1yQ>Di|f+L6%fg#pWGXt+(hEEkvOkN;w0Qs zK~p)Dxqkki6hrKDf|MgZ|Bec!b)N4W$xX;}bD5P`<#wxA0-Ou(j`j%gsp`y{dwn=B zIV+yN?7<6Bl|B5xg;#T52!b2x6`BvKQdF0Gi00L!eHGP!uO2Bl+D{qF(^Lq3sb
    OhEIl3ImDu8h{7I5Ae4i`0Cl6A1vWhdNsXq#%n*kA?fD?;g6bIclG``wIh6^Xd z=>P7P2&1Drk0L%rk>XU7^PtmT7LteLnw-`!Tl@5^!?j2H~~AP=TGN7k+>F$h#3;|W`hefGY`gas^UixnW{Y&oW{CDoK`?>LVXUKTR^Vb z5)Y`eK&Y3(;tS#wiD#V~1zQS$FXe%&EJP`BGN%-V$1D)RWpM;e`uG%C`Zp4Nx Date: Thu, 3 Oct 2024 11:39:51 +0300 Subject: [PATCH 04/16] Style fixes --- .../pdf_txtlayer_reader/pdf_tabby_reader.py | 16 +++++----------- 1 file changed, 5 insertions(+), 11 deletions(-) diff --git a/dedoc/readers/pdf_reader/pdf_txtlayer_reader/pdf_tabby_reader.py b/dedoc/readers/pdf_reader/pdf_txtlayer_reader/pdf_tabby_reader.py index 6bcbf2a6..00837fb8 100644 --- a/dedoc/readers/pdf_reader/pdf_txtlayer_reader/pdf_tabby_reader.py +++ b/dedoc/readers/pdf_reader/pdf_txtlayer_reader/pdf_tabby_reader.py @@ -109,10 +109,9 @@ def __extract(self, path: str, parameters: dict, warnings: list, tmp_dir: str)\ return all_lines, all_tables, all_tables_on_images, all_attached_images, document_metadata gost_json_path = "" - remove_frame = False - if get_param_need_gost_frame_analysis(parameters): - remove_frame = True - gost_json_path = self.__save_gost_frame_boxes_to_json(first_page=first_page, last_page=last_page, page_count=page_count, tmp_dir=tmp_dir, path=path) # noqa + remove_frame = get_param_need_gost_frame_analysis(parameters) + if remove_frame: + gost_json_path = self.__save_gost_frame_boxes_to_json(first_page=first_page, last_page=last_page, page_count=page_count, tmp_dir=tmp_dir, path=path) # in java tabby reader page numeration starts with 1, end_page is included first_tabby_page = first_page + 1 if first_page is not None else 1 @@ -332,7 +331,7 @@ def __run(self, args = ["java"] + ["-jar", self.__jar_path(), "-i", path, "-tmp", f"{tmp_dir}/"] if remove_frame: - args += ["-rf", gost_json_path] + args += ["-rf", gost_json_path] if start_page is not None and end_page is not None: args += ["-sp", str(start_page), "-ep", str(end_page)] try: @@ -355,12 +354,7 @@ def __process_pdf(self, import json import os - self.__run(path=path, - start_page=start_page, - end_page=end_page, - tmp_dir=tmp_dir, - remove_frame=remove_frame, - gost_json_path=gost_json_path) + self.__run(path=path, start_page=start_page, end_page=end_page, tmp_dir=tmp_dir, remove_frame=remove_frame, gost_json_path=gost_json_path) with open(os.path.join(tmp_dir, "data.json"), "r") as response: document = json.load(response) From ca435a1f16213500b1fb33bf3d1d10a279feb8db Mon Sep 17 00:00:00 2001 From: Nasty Date: Thu, 3 Oct 2024 12:18:25 +0300 Subject: [PATCH 05/16] Added tests --- .../test_api_module_table_recognizer.py | 8 +++++ .../test_module_gost_frame_recognizer.py | 29 +++++++++++++++++++ 2 files changed, 37 insertions(+) diff --git a/tests/api_tests/test_api_module_table_recognizer.py b/tests/api_tests/test_api_module_table_recognizer.py index dbd3f10f..18b5a0f7 100644 --- a/tests/api_tests/test_api_module_table_recognizer.py +++ b/tests/api_tests/test_api_module_table_recognizer.py @@ -253,6 +253,14 @@ def test_multipage_gost_table(self) -> None: def test_multipage_gost_table_with_text_layer(self) -> None: file_name = "gost_multipage_table_2.pdf" result = self._send_request(file_name, data={"need_gost_frame_analysis": "True", "pdf_with_text_layer": "True"}) + self.__check_content(result) + + def test_multipage_gost_table_tabby(self) -> None: + file_name = "gost_multipage_table_2.pdf" + result = self._send_request(file_name, data={"need_gost_frame_analysis": "True", "pdf_with_text_layer": "tabby"}) + self.__check_content(result) + + def __check_content(self, result: dict) -> None: self.assertEqual(len(result["content"]["tables"][0]["cells"]), 14) target_bbox_dict = { "x_top_left": 0.12, diff --git a/tests/unit_tests/test_module_gost_frame_recognizer.py b/tests/unit_tests/test_module_gost_frame_recognizer.py index d3f35938..0dd94f60 100644 --- a/tests/unit_tests/test_module_gost_frame_recognizer.py +++ b/tests/unit_tests/test_module_gost_frame_recognizer.py @@ -6,10 +6,14 @@ import numpy as np import dedoc.utils.parameter_utils as param_utils +from dedoc.data_structures.unstructured_document import UnstructuredDocument +from dedoc.readers.pdf_reader.data_classes.line_with_location import LineWithLocation from dedoc.readers.pdf_reader.pdf_auto_reader.pdf_auto_reader import PdfAutoReader from dedoc.readers.pdf_reader.pdf_base_reader import ParametersForParseDoc from dedoc.readers.pdf_reader.pdf_image_reader.pdf_image_reader import PdfImageReader from dedoc.readers.pdf_reader.pdf_image_reader.table_recognizer.gost_frame_recognizer import GOSTFrameRecognizer +from dedoc.readers.pdf_reader.pdf_txtlayer_reader.pdf_tabby_reader import PdfTabbyReader +from dedoc.readers.pdf_reader.pdf_txtlayer_reader.pdf_txtlayer_reader import PdfTxtlayerReader from tests.test_utils import get_test_config @@ -19,6 +23,8 @@ class TestGOSTFrameRecognizer(unittest.TestCase): test_data_folder = os.path.abspath(os.path.join(os.path.dirname(__file__), "..", "data", "tables")) pdf_image_reader = PdfImageReader(config=get_test_config()) pdf_auto_reader = PdfAutoReader(config=get_test_config()) + pdf_txtlayer_reader = PdfTxtlayerReader(config=get_test_config()) + pdf_tabby_reader = PdfTabbyReader(config=get_test_config()) def _get_params_for_parse(self, parameters: Optional[dict], file_path: Optional[str]) -> ParametersForParseDoc: parameters = parameters if parameters else {} @@ -86,3 +92,26 @@ def test_pdf_auto_reader(self) -> None: self.assertEqual(result.tables[0].cells[0][2].get_text(), "Колонка 3") self.assertEqual(len(result.tables[0].cells), 22) self.assertTrue("Название таблицы (продолжение)" in result.lines[0].line) + + def test_pdf_txtlayer_reader(self) -> None: + file_path = os.path.join(self.test_data_folder, "gost_multipage_table_2.pdf") + result = self.pdf_txtlayer_reader.read(file_path=file_path, parameters={"need_gost_frame_analysis": "true"}) + self.__check_content(result) + + def test_pdf_tabby_reader(self) -> None: + file_path = os.path.join(self.test_data_folder, "gost_multipage_table_2.pdf") + result = self.pdf_tabby_reader.read(file_path=file_path, parameters={"need_gost_frame_analysis": "true"}) + self.__check_content(result) + + def __check_content(self, result: UnstructuredDocument) -> None: + self.assertTrue(len(result.tables) == 1) + self.assertEqual(result.tables[0].cells[0][0].get_text(), "SAMPLE TEXT") + # {"x_top_left": 0.37142857142857144, "y_top_left": 1.708680142687277, "width": 0.1815126050420168, "height": 0.022592152199762187, + # "page_width": 595, "page_height": 841} + + self.assertEqual(result.tables[0].cells[1][0].get_text(), "1") + self.assertEqual(len(result.tables[0].cells), 14) + line: LineWithLocation = result.lines[37] + self.assertEqual(line.line.strip(), "1. Sample text 1") + self.assertTrue(abs(line.location.bbox.x_top_left - 212) < 10) + self.assertTrue(abs(line.location.bbox.y_top_left - 1309) < 10) From 56ebed6511188e80640e5db04d7381a4743de6a0 Mon Sep 17 00:00:00 2001 From: alexander1999-hub Date: Thu, 3 Oct 2024 12:39:36 +0300 Subject: [PATCH 06/16] added original image shape to gost json --- .../pdf_reader/pdf_txtlayer_reader/pdf_tabby_reader.py | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/dedoc/readers/pdf_reader/pdf_txtlayer_reader/pdf_tabby_reader.py b/dedoc/readers/pdf_reader/pdf_txtlayer_reader/pdf_tabby_reader.py index 00837fb8..00007eed 100644 --- a/dedoc/readers/pdf_reader/pdf_txtlayer_reader/pdf_tabby_reader.py +++ b/dedoc/readers/pdf_reader/pdf_txtlayer_reader/pdf_tabby_reader.py @@ -150,7 +150,10 @@ def __save_gost_frame_boxes_to_json(self, first_page: Optional[int], last_page: images = self._get_images(path, first_page, last_page) gost_analyzed_images = Parallel(n_jobs=self.config["n_jobs"])(delayed(self.gost_frame_recognizer.rec_and_clean_frame)(image) for image in images) - result_dict = {page_number: page_data[1].to_dict() for page_number, page_data in enumerate(gost_analyzed_images, start=first_page)} + result_dict = { + page_number: {**page_data[1].to_dict(), **{"original_image_width": page_data[2][1], "original_image_height": page_data[2][0]}} + for page_number, page_data in enumerate(gost_analyzed_images, start=first_page) + } result_json_path = os.path.join(tmp_dir, "gost_frame_bboxes.json") with open(result_json_path, "w") as f: json.dump(result_dict, f) From 5fc5ca9344f30c4b2152e8b6961c491fddb49186 Mon Sep 17 00:00:00 2001 From: sunveil Date: Fri, 4 Oct 2024 12:22:42 +0800 Subject: [PATCH 07/16] Fix normalized coordinates Fix save cropped PDF to tmp dir --- .../tabbypdf/jars/ispras_tbl_extr.jar | Bin 163090 -> 163507 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/dedoc/readers/pdf_reader/pdf_txtlayer_reader/tabbypdf/jars/ispras_tbl_extr.jar b/dedoc/readers/pdf_reader/pdf_txtlayer_reader/tabbypdf/jars/ispras_tbl_extr.jar index b7400cb3dba9196f36d77b897b6c74dc37fa6b68..3b02cf8edee8678b06ad19536967f9b7bf2cec9a 100644 GIT binary patch delta 8768 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 delta 8348 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 g|78e&0x= Date: Fri, 4 Oct 2024 13:18:26 +0800 Subject: [PATCH 08/16] Fix frame --- .../tabbypdf/jars/ispras_tbl_extr.jar | Bin 163507 -> 163629 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/dedoc/readers/pdf_reader/pdf_txtlayer_reader/tabbypdf/jars/ispras_tbl_extr.jar b/dedoc/readers/pdf_reader/pdf_txtlayer_reader/tabbypdf/jars/ispras_tbl_extr.jar index 3b02cf8edee8678b06ad19536967f9b7bf2cec9a..8ad4eebef613252503bdb040e597a6742c92df0d 100644 GIT binary patch delta 10697 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 Date: Fri, 4 Oct 2024 11:46:01 +0300 Subject: [PATCH 09/16] Fix test for pdf_txtlayer_reader --- tests/unit_tests/test_module_gost_frame_recognizer.py | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/tests/unit_tests/test_module_gost_frame_recognizer.py b/tests/unit_tests/test_module_gost_frame_recognizer.py index 0dd94f60..19d66a91 100644 --- a/tests/unit_tests/test_module_gost_frame_recognizer.py +++ b/tests/unit_tests/test_module_gost_frame_recognizer.py @@ -104,14 +104,15 @@ def test_pdf_tabby_reader(self) -> None: self.__check_content(result) def __check_content(self, result: UnstructuredDocument) -> None: - self.assertTrue(len(result.tables) == 1) + self.assertEqual(len(result.tables), 1) self.assertEqual(result.tables[0].cells[0][0].get_text(), "SAMPLE TEXT") + self.assertTrue(len(result.tables[0].cells[0][0].lines[0].annotations) > 0) # {"x_top_left": 0.37142857142857144, "y_top_left": 1.708680142687277, "width": 0.1815126050420168, "height": 0.022592152199762187, # "page_width": 595, "page_height": 841} self.assertEqual(result.tables[0].cells[1][0].get_text(), "1") self.assertEqual(len(result.tables[0].cells), 14) - line: LineWithLocation = result.lines[37] + line: LineWithLocation = result.lines[0] self.assertEqual(line.line.strip(), "1. Sample text 1") self.assertTrue(abs(line.location.bbox.x_top_left - 212) < 10) self.assertTrue(abs(line.location.bbox.y_top_left - 1309) < 10) From 4b5831b40e647ace8de73986254a8fa64291f251 Mon Sep 17 00:00:00 2001 From: sunveil Date: Wed, 6 Nov 2024 17:27:47 +0800 Subject: [PATCH 10/16] Fix remove GOST grame --- .../tabbypdf/jars/ispras_tbl_extr.jar | Bin 163629 -> 164482 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/dedoc/readers/pdf_reader/pdf_txtlayer_reader/tabbypdf/jars/ispras_tbl_extr.jar b/dedoc/readers/pdf_reader/pdf_txtlayer_reader/tabbypdf/jars/ispras_tbl_extr.jar index 8ad4eebef613252503bdb040e597a6742c92df0d..4a5ce2840bd51d442c1cd89edefb8f173aeaf89b 100644 GIT binary patch delta 44434 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%0Ai@&3elGfFV=RUXqBgg|ca{Jz-M^b;UAe$D zY!0GX0q0$_Knln|0BH{1v;tUB8Xs6e8Zq5KgcX2lNClRl#*+bHpB2FIcR<9-qG2#g z4;QBg<}MCS&OE5-U4{Ms{kb5w|M*NqgBsQV!?_z=n^N|0s4&M8D$J4ig9iq~i9vCZ zK&`mgasONy$e!=kkUd3lzvuB2X#PDfZ3E30g8!2z0Z$$QSFiqWX(51A6oXdv{}@PP z``#0SXEp$;)enec3r#ZBo=<|(wg4%LsE;BtHvS`#(u4`VwFR)x<56b|1yH%=w+Q}2 z;0otOi{1w*L)?1s2-@oT!;e)C^hI z-!oh&qU1w}c-Z|n@e1hu5MaH6+G6rD9%-PdEkFXqd_13r0!oVNM@D!a|3Dnxcs(>2 zi~(8$`U`f|4*X`P9>V#LH`~c^si<-)X$%-l^n#Sx&_7C2AN@Wt^^YLyls`KB5;)c`UQ+t5;KMEgos_x}NW~M+&FCLWea|x2ztr;S4%Hj74<~@cKhI~Uok;JZl zrvxP&0qk>k>z3C)bYFtOu3m=0crR!kngyRe0Z2hndw}Jf^$VQdp%GH|5?VEp3#`Z= zC}agx;Ct*LP1GwWQIc5y)ju@pu`2qMLgLzxIQ)XR-P&*VzID2D!%#TE4iJvd=I@D_ zt$!v~Q4{t%=dOUXjsORWTg4F~2K+qd2K^m>AKC&GF%$WlbNVmhl_wBU=ID1Mwq~xx z79A6uhw0o!?;BR#AY>!^89|15{#2CqmzWWZNQM(6^x5*CVI?i}@HjpQ@~v}k(J zZo3#tZ|vWw(>Q4VgiOg9pt^L1hX$$=pfQ4>&cF9W5<~@<$-ru7fb;y!rnv)@WSQ(} zFjp7bN59k89~pw&1!C`H2XDFn^r(>QqsG`=poa@Ui-kH@!W(EEFp$m#AO>>9!0Nx) z#!+lbw?HH`KDYhPR%O>Oc<3huins!Fe_th{i!x|12S-b%2Y;v2f9#RdJ07uvB|t%F zg+j}40SHePeCG=A{+*bCeR&Yg4IoFEP2~pJL!$tSx&f^8D6=DGm$pGjybb!YT!6Wx zhz6c1p|SqGCu<(ix!<|NFK`g(iV0W3a&kphFowgBp`M zfF~ZmGcJcGH12i+l{^6k)cj-ASlJZ}{cBtTjW6waqJdl9XtdzE=kNV?jN*d%faG3( z-E@Dx9UXc}`X3(&KhVGnph01KdqG$fkq}li8ZlVn^&6`Jq5||$;Di@Ijp8~&jZdRN zGH-zUJjs*JmBfLA{!o%{j03H_0aOn>Fx(r$N{&YZ9TOoer1@{G0f-8iB!TPRf7$hC zA@{|5I`$37rP!*&=9y&rty12CT-it{pCFwF-#6eS~Iwa;H^ zfiPcbSrQWVz6OI`%=aFjK{Q{0Ui{zBDv*{xKFEpx?Gcv;W{)iYwNpT2U&tkfNzlg^ zU^?FugO+aPB+!1~f-c*OJ4bj0Z1MeT=kyJK0{0<~704u#KeWMM(HkJTA8-Q|M0P(2 zyXOE@^aI#_A83zkw|0p83UnJ?#Ev@xqx}Fz(SQ4bbpiYJF&a$uwzf2v(p~v~KQo=5 z2(mVa!@|S7LP$m1aN-q+e70^B&TSg0~$c`?_K>4#XNHv96DX9=y7%I>2E6DQ^*<#%lAwW*t z0NBe1(41>WEkP Date: Wed, 6 Nov 2024 17:39:24 +0800 Subject: [PATCH 11/16] Fix remove GOST grame --- dedoc/readers/pdf_reader/pdf_base_reader.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/dedoc/readers/pdf_reader/pdf_base_reader.py b/dedoc/readers/pdf_reader/pdf_base_reader.py index ff2c80c6..e986d7cd 100644 --- a/dedoc/readers/pdf_reader/pdf_base_reader.py +++ b/dedoc/readers/pdf_reader/pdf_base_reader.py @@ -2,6 +2,7 @@ from collections import namedtuple from typing import Dict, Iterator, List, Optional, Set, Tuple +import numpy as np from dedocutils.data_structures.bbox import BBox from numpy import ndarray @@ -12,6 +13,7 @@ from dedoc.readers.pdf_reader.data_classes.line_with_location import LineWithLocation from dedoc.readers.pdf_reader.data_classes.pdf_image_attachment import PdfImageAttachment from dedoc.readers.pdf_reader.data_classes.tables.scantable import ScanTable +from dedoc.readers.pdf_reader.pdf_image_reader.table_recognizer.gost_frame_recognizer import GOSTFrameRecognizer ParametersForParseDoc = namedtuple("ParametersForParseDoc", [ From cbaad89523582db8a1294dba0b2de849ed143ee3 Mon Sep 17 00:00:00 2001 From: sunveil Date: Thu, 7 Nov 2024 17:38:17 +0800 Subject: [PATCH 12/16] Fix NullPointerException in get outside blocks --- .../tabbypdf/jars/ispras_tbl_extr.jar | Bin 164482 -> 164506 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/dedoc/readers/pdf_reader/pdf_txtlayer_reader/tabbypdf/jars/ispras_tbl_extr.jar b/dedoc/readers/pdf_reader/pdf_txtlayer_reader/tabbypdf/jars/ispras_tbl_extr.jar index 4a5ce2840bd51d442c1cd89edefb8f173aeaf89b..2b3c916fa11d5468b0e1ad78ec2cd0d938c7d843 100644 GIT binary patch delta 5892 zcmZ8lXEdB`*PXc$VkATxy#&!EM2{$=#W0B8qlAdwJA)V{L>XlmJz)ev^cK-2K}K&; zqBGGV#uHL_dDgeS^?u*|XP;}IefGM~wXXB$M58FNC`u}QZ4y#?5CsJVs4AIWF8 z%Bll|feWY?C0(|?L~6$+(F;Ta^ywt&be9ZMy2tHHjPIdlzr>uc>N*$Lyetg<&U6`! ztAVLV|79M4%l-`#5a0rd3kD+?36?@OCAoc?9;$mBg>pRQ(`IDcw&Ued;>xa^I(FHc zs;&#&fY#8&X#!Vzcx)*JwdPwSQ%RxoOe|bixj&PPqZ^*)Hf7-Wo~BEuHt^}QZWa0- z>@RhM2KGY35BKxrwuXmuPDh6Gu6;dSZiU7>HwMWnlNr5E)#STFW0=P`XX=(;5|Irhc1=!{sKKT^qpM!e2TihGgM@(wXPRf~r$0YO}OcYqT8NOcB? zkef5x(S!)LYLqP#?p$3I$!86zom^hm@k7G&KPg+#LI|tYM@B+xqD#+ePt>C2j*Kf( z^B%}nXzOOeA=zuJDSgqu`CO4{@Tp;g)w^bl=y!=m6?RJt&LWDX>OGpogf!x=L8eP^ z03LkbBj%Y!pLDZM>4wkNV-XHT+C&!S`fEZ`KX!LXR@8zNUe4pN#unX%_5bwSzOi0} zXIg9sMu+g;l&dsy!Pw&*t_nVBkENFLPk>i$fM3w>7-UXAm|kj;cC15AS4{GmuL#PT z)J<15M45A_Lip&v@H&?hy-9Dl@1>{_QyB@#aZWhm>)H){{X*%UTIUHMY?N0T zv8)Ly;hMg!jFzmFaw|M+?Kei9;IFx7fs zQ#sC&WyGef_m&n>>b(hdXXThv9AE6r&!H0{3>(EZ5k0@QIU-B4VUp$gW~Jc`oZa{s zh3GPbj-Teu=n59MnPUD}GqO^$7wzVK8SsbCS7y!jDf+&jD2g;rhZ~j3)*SU8m(PMb zvZ=5SwS5Cn8B=uHCO@u9bZ^HR^o#)z{TPhKU<(HpQ$)ZD}5`rjIt!bb2lc z+<#NK9qMxf!*r0PmfLH}4n}oD=(;^8VdB*Vm5JZ;wQu6mNyz_^&h#j|XUnGhF6TfF z!sI1F`sZY_(14)Z26;}~vTmSc>zlD}Lf~kF+QPRrlomFhZhNvpM#KF&VbrgQT;W&1 zpVZ2)mbiB~RanGcBdHB~ZJawDogT77>{~jV++ zHVVmzDpy{Ld_VKuU5MxOLwZUjQLcb!=M(CNHAj|=bMlKT_Q*PILXG6p)P8Pe+x6l8 z5J~^$z#bV9v_dF4*{j%3Uk zi~IQlvD^Fz>PohHm_pQ}{96zA9PRWfuB{{^7Hg0CH2+x+_<6=KHXQs5)S-1gAa?E% ziL@#HF!$`_g!ykA?EDkxmmE6G!pYOkDKGcR?GThkMs%0$`Dj7+e%jElINMunS&>!_ zNhw=%L|HKJ*_f9=1@qmcP7Ctu(~gV8Yu3>&K5ry;-dNQse4q_|!UGi>svV7GZmpKb zIAY7ao_e7ET46R`X1!5w75}g!%$he<--)C~zHn%Xxu0#@Rou;l&0(2Y8#m$Ih+=BX z78m81Mt>%i0n+Wd3>&9p;(w~8rh*uGu6zty%X4QMlIZr@am+FsgKU;~;PEU{4a*U> zBIVbf28-1D!d$cc^XFDib7I*GbXiPytO^+PmTaydEc3&es6gZOR05wLIE({o0?0%{ zbgslcXI-OLutv#4eik?HC-s!qoS^e9PE}|XOtsf?q)c${rdxt9Z8LYPOt=45;Irrb zhXsmr)RZnmOX<`OKKJl>3rpWtOa3rzENVU5@oAG?WAPG=DSNx}GLIGgvtoAF_RaVK zyG-Yn(+1fD#K-)m9+b~}TOK8}E{|L(h&E{v_Oi@N(oZ>F@@{2spJ|L{#($7B0jJ$t0<8M07YJyje`u~}I(H~-USTa|kA z$`t6K6uu&Nto1=+$AoxmgZu$ph0M(&DoV$sYf-EFB!eKVoBDQX1fh+-a)v~YIs5JT zEj|9`?>9gr`5)^FX>K0s)H?I{RKuO^>pUpPh#8}D{ z5qx+eD)?HlEC)aSq4xd4S!yQg)5hs-RU5na!PaQ!)}4Z3+Pu~Fyw+~xa@SgcZWZ=h zrjPSxsymm$2l@e2O)Y+;;W_e3b1aN;v&c$+Q`++;ny*EwLoS4#ktKV4jeGHn+1Jz? z0-FJjzCo5MUJNp%=DrFO9;l4o>spU(>7UG56pUb z)7;N7@lIzqS#BMgWivWh>?j@`cDtXS*x~_)7e|356dZVa=-U3W99=^;qWj(vDOqRY z7N$OX9`v+u^tB7?dB<$=e3?9nF~PL?`&T}mtw;FZv%Z);<3D2sjG2S>{_b^3UbnJ# zG2)2{wb@L4q#6!)4~v$dPKBp(b2aNEU7WcN;yiYJjRcj&>?8y)ybnS9)Vzia!>@kM zR(QfxAiv6J%tk}5-G@}Uqu8BfX>0`g2#@sER1Px;gWm|OSQYaYS>rGFA}YIeF3EF^ zP>?iqSkQcwP5Pna$QeH3k<$37A+VA$-Wg~res0(Mf(7`dL(1pkY4!wu+Dm+Vb=_`Wrq4`hB}yKrbUdT*X>Z9>ZM_CX-_;3 z#=g->hfJ)mO1APMrb|EllAO!9WjX%X68laT5m538FWIUqiHvf(ug4mg8BkbU0L{hf zJ^cDoQ*?R*-MCGEO)?+no=>UR9QaE(6Mn8*SZa>ofBFF_`0L|Ui@v-#&dj_WUVe}e z#kZ#?)u~IpTL`}!ilNTeU%mysw~BRc9P9sn>hkT?^)|E^+2FK(yu6^UD?wv;L1kw< z!a}c5y`-S%1(E7_Jh1^~GmtzJInFuCK;&U5l8KsZ=30SDMz?sB{Uivj6pI&+Ul%V7 zNN{OmQHTyhDrqL272*$5e2bU}FoUFHKr8=)yFkVyd65FT4Kz4J�uX=0*{)d^oMO_k{_+bp`b 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 E0WL1%PXGV_ From 8ccdb44f8b48fd4767a79c69619a9f136570bad1 Mon Sep 17 00:00:00 2001 From: Belyaeva Oksana Date: Wed, 13 Nov 2024 14:16:27 +0300 Subject: [PATCH 13/16] TLDR-850 added multipage into tabby reader --- .../pdf_reader/data_classes/tables/cell.py | 25 ++---- .../data_classes/tables/location.py | 1 + .../data_classes/tables/scantable.py | 14 ++- .../multipage_table_extractor.py | 13 +-- .../table_attribute_extractor.py | 17 ++++ .../pdf_txtlayer_reader/pdf_tabby_reader.py | 62 +++++++------ .../test_api_misc_multipage_table.py | 64 +++++++------- .../test_api_module_table_recognizer.py | 87 +++---------------- 8 files changed, 123 insertions(+), 160 deletions(-) diff --git a/dedoc/readers/pdf_reader/data_classes/tables/cell.py b/dedoc/readers/pdf_reader/data_classes/tables/cell.py index dd7ece41..0d42dc37 100644 --- a/dedoc/readers/pdf_reader/data_classes/tables/cell.py +++ b/dedoc/readers/pdf_reader/data_classes/tables/cell.py @@ -3,10 +3,11 @@ from dedocutils.data_structures import BBox from dedoc.data_structures.annotation import Annotation +from dedoc.data_structures.cell_with_meta import CellWithMeta from dedoc.data_structures.line_with_meta import LineWithMeta -class Cell: +class Cell(CellWithMeta): @staticmethod def copy_from(cell: "Cell", @@ -41,35 +42,27 @@ def shift(self, shift_x: int, shift_y: int, image_width: int, image_height: int) if self.con_coord: self.con_coord.shift(shift_x=shift_x, shift_y=shift_y) - def __init__(self, - x_top_left: int, - x_bottom_right: int, - y_top_left: int, - y_bottom_right: int, - id_con: int = -1, - lines: Optional[List[LineWithMeta]] = None, - is_attribute: bool = False, - is_attribute_required: bool = False, - rotated_angle: int = 0, - uid: str = None, + def __init__(self, x_top_left: int, x_bottom_right: int, y_top_left: int, y_bottom_right: int, id_con: int = -1, lines: Optional[List[LineWithMeta]] = None, + is_attribute: bool = False, is_attribute_required: bool = False, rotated_angle: int = 0, uid: str = None, contour_coord: Optional[BBox] = None) -> None: + import uuid assert x_top_left <= x_bottom_right assert y_top_left <= y_bottom_right + + self.lines = [] if lines is None else lines + super().__init__(lines) + self.x_top_left = x_top_left self.x_bottom_right = x_bottom_right self.y_top_left = y_top_left self.y_bottom_right = y_bottom_right self.id_con = id_con - self.lines = [] if lines is None else lines self.is_attribute = is_attribute self.is_attribute_required = is_attribute_required self.rotated_angle = rotated_angle self.cell_uid = f"cell_{uuid.uuid1()}" if uid is None else uid - self.colspan = 1 - self.rowspan = 1 - self.invisible = False self.con_coord = contour_coord or BBox(0, 0, 0, 0) def __str__(self) -> str: diff --git a/dedoc/readers/pdf_reader/data_classes/tables/location.py b/dedoc/readers/pdf_reader/data_classes/tables/location.py index 42bc468d..dbec5407 100644 --- a/dedoc/readers/pdf_reader/data_classes/tables/location.py +++ b/dedoc/readers/pdf_reader/data_classes/tables/location.py @@ -10,6 +10,7 @@ def __init__(self, page_number: int, bbox: BBox, name: str = "", rotated_angle: self.page_number = page_number self.bbox = bbox self.name = name + # TODO put self.order (change LineWithLocation, PdfImageAttachment, ScanTable) self.rotated_angle = rotated_angle def shift(self, shift_x: int, shift_y: int) -> None: diff --git a/dedoc/readers/pdf_reader/data_classes/tables/scantable.py b/dedoc/readers/pdf_reader/data_classes/tables/scantable.py index ee8316d0..be812630 100644 --- a/dedoc/readers/pdf_reader/data_classes/tables/scantable.py +++ b/dedoc/readers/pdf_reader/data_classes/tables/scantable.py @@ -1,4 +1,4 @@ -from typing import Any, List +from typing import Any, List, Optional from dedocutils.data_structures import BBox @@ -10,7 +10,8 @@ class ScanTable: - def __init__(self, page_number: int, matrix_cells: List[List[Cell]] = None, bbox: BBox = None, name: str = "", order: int = -1) -> None: + def __init__(self, page_number: int, matrix_cells: Optional[List[List[CellWithMeta]]] = None, bbox: Optional[BBox] = None, + name: str = "", order: int = -1) -> None: self.matrix_cells = matrix_cells self.page_number = page_number self.locations = [] @@ -27,6 +28,15 @@ def extended(self, table: "ScanTable") -> None: # extend order self.order = max(self.order, table.order) + def check_on_cell_instance(self) -> bool: + if len(self.matrix_cells) == 0: + return False + if len(self.matrix_cells[0]) == 0: + return False + if not isinstance(self.matrix_cells[0][0], Cell): + return False + return True + def to_table(self) -> Table: metadata = TableMetadata(page_id=self.page_number, uid=self.name, rotated_angle=self.location.rotated_angle) cells_with_meta = [[CellWithMeta.create_from_cell(cell) for cell in row] for row in self.matrix_cells] diff --git a/dedoc/readers/pdf_reader/pdf_image_reader/table_recognizer/table_extractors/concrete_extractors/multipage_table_extractor.py b/dedoc/readers/pdf_reader/pdf_image_reader/table_recognizer/table_extractors/concrete_extractors/multipage_table_extractor.py index 39517b2f..06abe0c2 100644 --- a/dedoc/readers/pdf_reader/pdf_image_reader/table_recognizer/table_extractors/concrete_extractors/multipage_table_extractor.py +++ b/dedoc/readers/pdf_reader/pdf_image_reader/table_recognizer/table_extractors/concrete_extractors/multipage_table_extractor.py @@ -1,3 +1,4 @@ +import copy import logging from typing import List @@ -155,24 +156,26 @@ def __is_one_table(self, t1: ScanTable, t2: ScanTable) -> bool: # condition 2. Exclusion of the duplicated header (if any) attr1 = TableAttributeExtractor.get_header_table(t1.matrix_cells) attr2 = TableAttributeExtractor.get_header_table(t2.matrix_cells) + t2_update = copy.deepcopy(t2) if TableAttributeExtractor.is_equal_attributes(attr1, attr2): - t2.matrix_cells = t2.matrix_cells[len(attr2):] + t2_update.matrix_cells = t2_update.matrix_cells[len(attr2):] - if len(t2.matrix_cells) == 0 or len(t1.matrix_cells) == 0: + if len(t2_update.matrix_cells) == 0 or len(t1.matrix_cells) == 0: return False - TableAttributeExtractor.clear_attributes(t2.matrix_cells) + TableAttributeExtractor.clear_attributes(t2_update.matrix_cells) # condition 3. Number of columns should be equal - if len(t1.matrix_cells[-1]) != len(t2.matrix_cells[0]): + if len(t1.matrix_cells[-1]) != len(t2_update.matrix_cells[0]): if self.config.get("debug_mode", False): self.logger.debug("Different count column") return False # condition 4. Comparison of the widths of last and first rows - if not self.__is_equal_width_cells(t1.matrix_cells, t2.matrix_cells): + if t1.check_on_cell_instance() and t2_update.check_on_cell_instance() and not self.__is_equal_width_cells(t1.matrix_cells, t2_update.matrix_cells): if self.config.get("debug_mode", False): self.logger.debug("Different width columns") return False + t2.matrix_cells = copy.deepcopy(t2_update.matrix_cells) # save changes return True diff --git a/dedoc/readers/pdf_reader/pdf_image_reader/table_recognizer/table_extractors/concrete_extractors/table_attribute_extractor.py b/dedoc/readers/pdf_reader/pdf_image_reader/table_recognizer/table_extractors/concrete_extractors/table_attribute_extractor.py index f6390705..f13f0eec 100644 --- a/dedoc/readers/pdf_reader/pdf_image_reader/table_recognizer/table_extractors/concrete_extractors/table_attribute_extractor.py +++ b/dedoc/readers/pdf_reader/pdf_image_reader/table_recognizer/table_extractors/concrete_extractors/table_attribute_extractor.py @@ -31,8 +31,22 @@ def is_equal_attributes(attr1: List[List[Cell]], attr2: List[List[Cell]], thr_si return True + @staticmethod + def check_have_attributes(matrix_table: List[List[Cell]]) -> bool: + if len(matrix_table) == 0: + return False + if len(matrix_table[0]) == 0: + return False + if not hasattr(matrix_table[0][0], "is_attribute"): + return False + return True + @staticmethod def get_header_table(matrix_table: List[List[Cell]]) -> List[List[Cell]]: + + if not TableAttributeExtractor.check_have_attributes(matrix_table): + return matrix_table[:1] + header_rows = len(matrix_table) for (i, row) in enumerate(matrix_table): attrs = [cell for cell in row if cell.is_attribute] @@ -44,6 +58,9 @@ def get_header_table(matrix_table: List[List[Cell]]) -> List[List[Cell]]: @staticmethod def clear_attributes(matrix_table: List[List[Cell]]) -> None: + if not TableAttributeExtractor.check_have_attributes(matrix_table): + return + for row in matrix_table: for cell in row: cell.is_attribute = False diff --git a/dedoc/readers/pdf_reader/pdf_txtlayer_reader/pdf_tabby_reader.py b/dedoc/readers/pdf_reader/pdf_txtlayer_reader/pdf_tabby_reader.py index 00007eed..1d0d594d 100644 --- a/dedoc/readers/pdf_reader/pdf_txtlayer_reader/pdf_tabby_reader.py +++ b/dedoc/readers/pdf_reader/pdf_txtlayer_reader/pdf_tabby_reader.py @@ -63,13 +63,7 @@ def read(self, file_path: str, parameters: Optional[dict] = None) -> Unstructure warnings = [] with tempfile.TemporaryDirectory() as tmp_dir: - lines, tables, tables_on_images, attachments, document_metadata = self.__extract( - path=file_path, - parameters=parameters, - warnings=warnings, - tmp_dir=tmp_dir - ) - lines = self.linker.link_objects(lines=lines, tables=tables_on_images, images=attachments) + lines, tables, attachments, document_metadata = self.__extract(path=file_path, parameters=parameters, warnings=warnings, tmp_dir=tmp_dir) if get_param_with_attachments(parameters) and self.attachment_extractor.can_extract(file_path): attachments += self.attachment_extractor.extract(file_path=file_path, parameters=parameters) @@ -80,15 +74,15 @@ def read(self, file_path: str, parameters: Optional[dict] = None) -> Unstructure return self._postprocess(result) - def __extract(self, path: str, parameters: dict, warnings: list, tmp_dir: str)\ - -> Tuple[List[LineWithMeta], List[Table], List[ScanTable], List[PdfImageAttachment], Optional[dict]]: + def __extract(self, path: str, parameters: dict, warnings: List[str], tmp_dir: str)\ + -> Tuple[List[LineWithMeta], List[Table], List[PdfImageAttachment], Optional[dict]]: import math from dedoc.utils.pdf_utils import get_pdf_page_count from dedoc.utils.utils import calculate_file_hash from dedoc.utils.parameter_utils import get_param_page_slice, get_param_with_attachments from dedoc.utils.parameter_utils import get_param_need_gost_frame_analysis - all_lines, all_tables, all_tables_on_images, all_attached_images = [], [], [], [] + all_lines, all_tables, all_scan_tables, all_attached_images = [], [], [], [] with_attachments = get_param_with_attachments(parameters) document_metadata = None @@ -106,12 +100,11 @@ def __extract(self, path: str, parameters: dict, warnings: list, tmp_dir: str)\ document_metadata["last_page"] = last_page if empty_page_limit: - return all_lines, all_tables, all_tables_on_images, all_attached_images, document_metadata + return all_lines, all_tables, all_attached_images, document_metadata - gost_json_path = "" - remove_frame = get_param_need_gost_frame_analysis(parameters) - if remove_frame: - gost_json_path = self.__save_gost_frame_boxes_to_json(first_page=first_page, last_page=last_page, page_count=page_count, tmp_dir=tmp_dir, path=path) + remove_gost_frame = get_param_need_gost_frame_analysis(parameters) + gost_json_path = self.__save_gost_frame_boxes_to_json(first_page=first_page, last_page=last_page, page_count=page_count, tmp_dir=tmp_dir, path=path) \ + if remove_gost_frame else "" # in java tabby reader page numeration starts with 1, end_page is included first_tabby_page = first_page + 1 if first_page is not None else 1 @@ -122,24 +115,26 @@ def __extract(self, path: str, parameters: dict, warnings: list, tmp_dir: str)\ end_page=last_tabby_page, tmp_dir=tmp_dir, gost_json_path=gost_json_path, - remove_frame=remove_frame) + remove_frame=remove_gost_frame) pages = document.get("pages", []) for page in pages: page_lines = self.__get_lines_with_location(page, file_hash) if page_lines: all_lines.extend(page_lines) - page_tables, table_on_images = self.__get_tables(page) - assert len(page_tables) == len(table_on_images) - if page_tables: - all_tables.extend(page_tables) - all_tables_on_images.extend(table_on_images) + scan_tables = self.__get_tables(page) + all_scan_tables.extend(scan_tables) attached_images = self.__get_attached_images(page=page, parameters=parameters, path=path) if with_attachments else [] if attached_images: all_attached_images.extend(attached_images) - return all_lines, all_tables, all_tables_on_images, all_attached_images, document_metadata + mp_tables = self.table_recognizer.convert_to_multipages_tables(all_scan_tables, lines_with_meta=all_lines) + all_lines = self.linker.link_objects(lines=all_lines, tables=mp_tables, images=all_attached_images) + + tables = [scan_table.to_table() for scan_table in mp_tables] + + return all_lines, tables, all_attached_images, document_metadata def __save_gost_frame_boxes_to_json(self, first_page: Optional[int], last_page: Optional[int], page_count: int, path: str, tmp_dir: str) -> str: from joblib import Parallel, delayed @@ -150,24 +145,25 @@ def __save_gost_frame_boxes_to_json(self, first_page: Optional[int], last_page: images = self._get_images(path, first_page, last_page) gost_analyzed_images = Parallel(n_jobs=self.config["n_jobs"])(delayed(self.gost_frame_recognizer.rec_and_clean_frame)(image) for image in images) + result_dict = { page_number: {**page_data[1].to_dict(), **{"original_image_width": page_data[2][1], "original_image_height": page_data[2][0]}} for page_number, page_data in enumerate(gost_analyzed_images, start=first_page) } + result_json_path = os.path.join(tmp_dir, "gost_frame_bboxes.json") with open(result_json_path, "w") as f: json.dump(result_dict, f) + return result_json_path - def __get_tables(self, page: dict) -> Tuple[List[Table], List[ScanTable]]: + def __get_tables(self, page: dict) -> List[ScanTable]: import uuid from dedoc.data_structures.cell_with_meta import CellWithMeta from dedoc.data_structures.concrete_annotations.bbox_annotation import BBoxAnnotation from dedoc.data_structures.line_metadata import LineMetadata - from dedoc.data_structures.table_metadata import TableMetadata - tables = [] - tables_on_image = [] + scan_tables = [] page_number = page["number"] page_width = int(page["width"]) page_height = int(page["height"]) @@ -179,7 +175,7 @@ def __get_tables(self, page: dict) -> Tuple[List[Table], List[ScanTable]]: cell_properties = table["cell_properties"] assert len(rows) == len(cell_properties) - result_cells = [] + cells = [] for num_row, row in enumerate(rows): assert len(row) == len(cell_properties[num_row]) @@ -191,6 +187,10 @@ def __get_tables(self, page: dict) -> Tuple[List[Table], List[ScanTable]]: for c in cell_blocks: cell_bbox = BBox(x_top_left=int(c["x_top_left"]), y_top_left=int(c["y_top_left"]), width=int(c["width"]), height=int(c["height"])) annotations.append(BBoxAnnotation(c["start"], c["end"], cell_bbox, page_width=page_width, page_height=page_height)) + """ + TODO: change to Cell class after tabby can return cell coordinates. Then set type Cell in class "ScanTable" + https://jira.intra.ispras.ru/browse/TLDR-851 + """ result_row.append(CellWithMeta( lines=[LineWithMeta(line=cell["text"], metadata=LineMetadata(page_id=page_number, line_id=0), annotations=annotations)], @@ -198,13 +198,11 @@ def __get_tables(self, page: dict) -> Tuple[List[Table], List[ScanTable]]: rowspan=cell_properties[num_row][num_col]["row_span"], invisible=bool(cell_properties[num_row][num_col]["invisible"]) )) - result_cells.append(result_row) + cells.append(result_row) - table_name = str(uuid.uuid4()) - tables.append(Table(cells=result_cells, metadata=TableMetadata(page_id=page_number, uid=table_name))) - tables_on_image.append(ScanTable(page_number=page_number, matrix_cells=None, bbox=table_bbox, name=table_name, order=order)) + scan_tables.append(ScanTable(page_number=page_number, matrix_cells=cells, bbox=table_bbox, name=str(uuid.uuid4()), order=order)) - return tables, tables_on_image + return scan_tables def __get_attached_images(self, page: dict, parameters: dict, path: str) -> List[PdfImageAttachment]: import os diff --git a/tests/api_tests/test_api_misc_multipage_table.py b/tests/api_tests/test_api_misc_multipage_table.py index 6a016bb7..5c3c0d2e 100644 --- a/tests/api_tests/test_api_misc_multipage_table.py +++ b/tests/api_tests/test_api_misc_multipage_table.py @@ -9,8 +9,8 @@ class TestMultipageTable(AbstractTestApiDocReader): def _get_abs_path(self, file_name: str) -> str: return os.path.join(self.data_directory_path, "tables", file_name) - def _get_tables(self, file_name: str) -> List[dict]: - result = self._send_request(file_name, {"pdf_with_text_layer": "false"}) + def _get_tables(self, file_name: str, pdf_with_text_layer: str) -> List[dict]: + result = self._send_request(file_name, {"pdf_with_text_layer": pdf_with_text_layer}) content = result["content"] self._test_table_refs(content=content) tables = content["tables"] @@ -20,49 +20,55 @@ def _get_tables(self, file_name: str) -> List[dict]: def test_api_ml_table_recognition_0(self) -> None: file_name = "example_with_table0.pdf" - tables = self._get_tables(file_name) + tables = self._get_tables(file_name, pdf_with_text_layer="false") self.assertEqual(len(tables), 1) def test_api_ml_table_recognition_3(self) -> None: file_name = "example_with_table9.pdf" - tables = self._get_tables(file_name) - self.assertEqual(len(tables), 1) + for pdf_param in ["false", "true", "tabby"]: + tables = self._get_tables(file_name, pdf_with_text_layer=pdf_param) + self.assertEqual(len(tables), 1) def test_api_ml_table_recognition_7(self) -> None: file_name = "example_table_with_90_orient_cells.pdf" - tables = self._get_tables(file_name) + tables = self._get_tables(file_name, pdf_with_text_layer="false") self.assertEqual(len(tables), 1) def test_api_ml_table_recognition_8(self) -> None: file_name = "example_with_table8.pdf" - tables = self._get_tables(file_name) + tables = self._get_tables(file_name, pdf_with_text_layer="false") self.assertEqual(len(tables), 1) def test_api_ml_table_recognition_synthetic_data_1(self) -> None: file_name = "example_mp_table_wo_repeate_header.pdf" - tables = self._get_tables(file_name) - self.assertEqual(len(tables), 1) + for pdf_param in ["false", "true", "tabby"]: + tables = self._get_tables(file_name, pdf_with_text_layer=pdf_param) + self.assertEqual(len(tables), 1) def test_api_ml_table_recognition_synthetic_data_3(self) -> None: file_name = "example_mp_table_with_repeate_header_2.pdf" - tables = self._get_tables(file_name) - self.assertEqual(len(tables), 1) - table = tables[0]["cells"] + for pdf_param in ["false", "true"]: + # for "tabby" doesn't work because need to unify the output of table in matrix form and set attribute cells, + # without this tables won't be merge. + tables = self._get_tables(file_name, pdf_with_text_layer=pdf_param) + + self.assertEqual(len(tables), 1) + table = tables[0]["cells"] - self.assertListEqual( - ["Заголовок\nБольшой", "Еще один большой заголовок", "Еще один большой заголовок", "Еще один большой заголовок", "Еще один большой заголовок"], - self._get_text_of_row(table[0]) - ) - self.assertListEqual(["Заголовок\nБольшой", "Заголовок поменьше 1", "Заголовок поменьше 1", "Заголовок поменьше 2", "Заголовок поменьше 2"], - self._get_text_of_row(table[1])) - self.assertListEqual(["Заголовок\nБольшой", "Заголовочек 1", "Заголовочек 2", "Заголовочек 3", "Заголовочек 4"], self._get_text_of_row(table[2])) - self.assertListEqual(["Данные 1", "Данные 1", "Данные 1", "Данные 1", "Данные 1"], self._get_text_of_row(table[3])) - self.assertListEqual(["Данные 2", "Данные 2", "Данные 2", "Данные 2", "Данные 2"], self._get_text_of_row(table[4])) - self.assertListEqual(["Данные 3", "Данные 3", "Данные 3", "Данные 3", "Данные 3"], self._get_text_of_row(table[5])) - self.assertListEqual(["Данные 4", "Данные 4", "Данные 4", "Данные 4", "Данные 4"], self._get_text_of_row(table[6])) - self.assertListEqual(["Данные 5", "Данные 5", "Данные 5", "Данные 5", "Данные 5"], self._get_text_of_row(table[7])) - self.assertListEqual(["Заголовок\nБольшой", "Заголовок поменьше 1", "Заголовок поменьше 1", "Заголовок поменьше 2", "Заголовок поменьше 2"], - self._get_text_of_row(table[8])) - self.assertListEqual(["Заголовок\nБольшой", "Заголовочек 1", "Заголовочек 2", "Заголовочек 3", "Заголовочек 4"], self._get_text_of_row(table[9])) - self.assertListEqual(["Данные 6", "Данные 6", "Данные 6", "Данные 6", "Данные 6"], self._get_text_of_row(table[10])) - self.assertListEqual(["Данные 7", "Данные 7", "Данные 7", "Данные 7", "Данные 7"], self._get_text_of_row(table[11])) + self.assertListEqual( + ["Заголовок\nБольшой", "Еще один большой заголовок", "Еще один большой заголовок", "Еще один большой заголовок", "Еще один большой заголовок"], + self._get_text_of_row(table[0]) + ) + self.assertListEqual(["Заголовок\nБольшой", "Заголовок поменьше 1", "Заголовок поменьше 1", "Заголовок поменьше 2", "Заголовок поменьше 2"], + self._get_text_of_row(table[1])) + self.assertListEqual(["Заголовок\nБольшой", "Заголовочек 1", "Заголовочек 2", "Заголовочек 3", "Заголовочек 4"], self._get_text_of_row(table[2])) + self.assertListEqual(["Данные 1", "Данные 1", "Данные 1", "Данные 1", "Данные 1"], self._get_text_of_row(table[3])) + self.assertListEqual(["Данные 2", "Данные 2", "Данные 2", "Данные 2", "Данные 2"], self._get_text_of_row(table[4])) + self.assertListEqual(["Данные 3", "Данные 3", "Данные 3", "Данные 3", "Данные 3"], self._get_text_of_row(table[5])) + self.assertListEqual(["Данные 4", "Данные 4", "Данные 4", "Данные 4", "Данные 4"], self._get_text_of_row(table[6])) + self.assertListEqual(["Данные 5", "Данные 5", "Данные 5", "Данные 5", "Данные 5"], self._get_text_of_row(table[7])) + self.assertListEqual(["Заголовок\nБольшой", "Заголовок поменьше 1", "Заголовок поменьше 1", "Заголовок поменьше 2", "Заголовок поменьше 2"], + self._get_text_of_row(table[8])) + self.assertListEqual(["Заголовок\nБольшой", "Заголовочек 1", "Заголовочек 2", "Заголовочек 3", "Заголовочек 4"], self._get_text_of_row(table[9])) + self.assertListEqual(["Данные 6", "Данные 6", "Данные 6", "Данные 6", "Данные 6"], self._get_text_of_row(table[10])) + self.assertListEqual(["Данные 7", "Данные 7", "Данные 7", "Данные 7", "Данные 7"], self._get_text_of_row(table[11])) diff --git a/tests/api_tests/test_api_module_table_recognizer.py b/tests/api_tests/test_api_module_table_recognizer.py index 18b5a0f7..a0f53753 100644 --- a/tests/api_tests/test_api_module_table_recognizer.py +++ b/tests/api_tests/test_api_module_table_recognizer.py @@ -1,4 +1,3 @@ -import json import os import unittest from typing import List @@ -215,36 +214,11 @@ def test_detect_small_table(self) -> None: tables = result["content"]["tables"] self.assertEqual(2, len(tables)) - def _test_bbox_annotations(self, node: dict, target_dict: dict) -> None: - annotations = [annotation for annotation in node["annotations"] if annotation["name"] == "bounding box"] - annotations_dict = json.loads(annotations[0]["value"]) - for key in target_dict: - self.assertAlmostEqual(float(annotations_dict[key]), target_dict[key], None, None, delta=0.05) - - def test_multipage_gost_table(self) -> None: + def test_multipage_gost_table_image(self) -> None: file_name = "gost_multipage_table.pdf" result = self._send_request(file_name, data={"need_gost_frame_analysis": "True"}) # don't pass pdf_with_text_layer to check condition in PDFBaseReader self.assertTrue(len(result["content"]["tables"][0]["cells"]) > 35) - target_bbox_dict = { - "x_top_left": 0.14, - "y_top_left": 0.11, - "width": 0.07, - "height": 0.01, - "page_width": 1653, - "page_height": 2339 - } - self._test_bbox_annotations(result["content"]["structure"]["subparagraphs"][0], target_bbox_dict) - self.assertTrue("Состав квалификационных испытаний" in result["content"]["structure"]["subparagraphs"][0]["text"]) self.assertTrue("KR13" in result["content"]["tables"][0]["cells"][-1][0]["lines"][0]["text"]) # check the last row of multipage table - target_bbox_dict_1 = { - "x_top_left": 0.15, - "y_top_left": 0.58, - "width": 0.04, - "height": 0.009, - "page_width": 1653, - "page_height": 2339 - } - self._test_bbox_annotations(result["content"]["tables"][0]["cells"][-1][0]["lines"][0], target_bbox_dict_1) self.assertTrue("R13.1" in result["content"]["tables"][0]["cells"][-1][1]["lines"][0]["text"]) # check that it belongs to first and only table self.assertTrue("Испытание по проверке" in result["content"]["tables"][0]["cells"][-1][2]["lines"][0]["text"]) self.assertTrue("3.6" in result["content"]["tables"][0]["cells"][-1][3]["lines"][0]["text"]) @@ -252,61 +226,22 @@ def test_multipage_gost_table(self) -> None: def test_multipage_gost_table_with_text_layer(self) -> None: file_name = "gost_multipage_table_2.pdf" - result = self._send_request(file_name, data={"need_gost_frame_analysis": "True", "pdf_with_text_layer": "True"}) - self.__check_content(result) - - def test_multipage_gost_table_tabby(self) -> None: - file_name = "gost_multipage_table_2.pdf" - result = self._send_request(file_name, data={"need_gost_frame_analysis": "True", "pdf_with_text_layer": "tabby"}) - self.__check_content(result) + for pdf_param in ["True", "tabby"]: + result = self._send_request(file_name, data={"need_gost_frame_analysis": "True", "pdf_with_text_layer": pdf_param}) + self.__check_content(result) def __check_content(self, result: dict) -> None: self.assertEqual(len(result["content"]["tables"][0]["cells"]), 14) - target_bbox_dict = { - "x_top_left": 0.12, - "y_top_left": 0.56, - "width": 0.01, - "height": 0.01, - "page_width": 595, - "page_height": 841 - } - self._test_bbox_annotations(result["content"]["structure"]["subparagraphs"][0]["subparagraphs"][0], target_bbox_dict) - self.assertTrue("Sample text 1" in result["content"]["structure"]["subparagraphs"][0]["subparagraphs"][0]["text"]) self.assertTrue("SAMPLE TEXT" in result["content"]["tables"][0]["cells"][0][0]["lines"][0]["text"]) - target_bbox_dict_1 = { - "x_top_left": 0.13, - "y_top_left": 0.61, - "width": 0.06, - "height": 0.007, - "page_width": 595, - "page_height": 841 - } - self._test_bbox_annotations(result["content"]["tables"][0]["cells"][0][0]["lines"][0], target_bbox_dict_1) self.assertTrue("2" in result["content"]["tables"][0]["cells"][-1][0]["lines"][0]["text"]) self.assertEqual(len(result["content"]["tables"]), 1) def test_multipage_gost_table_with_text_layer_and_pages_param(self) -> None: file_name = "gost_multipage_table_2.pdf" - result = self._send_request(file_name, data={"need_gost_frame_analysis": "True", "pdf_with_text_layer": "True", "pages": "2:"}) - self.assertEqual(len(result["content"]["tables"]), 1) - self.assertEqual(len(result["content"]["tables"][0]["cells"]), 5) - self.assertTrue("SAMPLE TEXT" in result["content"]["tables"][0]["cells"][0][0]["lines"][0]["text"]) - target_bbox_dict_1 = { - "x_top_left": 0.13, - "y_top_left": 0.07, - "width": 0.06, - "height": 0.007, - "page_width": 595, - "page_height": 841 - } - self._test_bbox_annotations(result["content"]["tables"][0]["cells"][0][0]["lines"][0], target_bbox_dict_1) - self.assertTrue("2" in result["content"]["tables"][0]["cells"][-1][0]["lines"][0]["text"]) - target_bbox_dict_2 = { - "x_top_left": 0.13, - "y_top_left": 0.15, - "width": 0.005, - "height": 0.007, - "page_width": 595, - "page_height": 841 - } - self._test_bbox_annotations(result["content"]["tables"][0]["cells"][-1][0]["lines"][0], target_bbox_dict_2) + + for pdf_param in ["True", "tabby"]: + result = self._send_request(file_name, data={"need_gost_frame_analysis": "True", "pdf_with_text_layer": pdf_param, "pages": "2:"}) + self.assertEqual(len(result["content"]["tables"]), 1) + self.assertEqual(len(result["content"]["tables"][0]["cells"]), 5) + self.assertTrue("SAMPLE TEXT" in result["content"]["tables"][0]["cells"][0][0]["lines"][0]["text"]) + self.assertTrue("2" in result["content"]["tables"][0]["cells"][-1][0]["lines"][0]["text"]) From 0e99a88aad375cf9fdf702660520c42d66fcf6c3 Mon Sep 17 00:00:00 2001 From: Belyaeva Oksana Date: Wed, 13 Nov 2024 19:09:11 +0300 Subject: [PATCH 14/16] TLDR-850 some fixes after rebase --- dedoc/data_structures/cell_with_meta.py | 6 +++--- dedoc/readers/pdf_reader/pdf_base_reader.py | 4 +--- tests/unit_tests/test_module_gost_frame_recognizer.py | 7 ++----- 3 files changed, 6 insertions(+), 11 deletions(-) diff --git a/dedoc/data_structures/cell_with_meta.py b/dedoc/data_structures/cell_with_meta.py index 133d69bf..d23cad1c 100644 --- a/dedoc/data_structures/cell_with_meta.py +++ b/dedoc/data_structures/cell_with_meta.py @@ -1,4 +1,4 @@ -from typing import List +from typing import List, Optional from dedoc.api.schema.cell_with_meta import CellWithMeta as ApiCellWithMeta from dedoc.data_structures.annotation import Annotation @@ -20,14 +20,14 @@ class CellWithMeta(Serializable): :vartype rowspan: int :vartype invisible: bool """ - def __init__(self, lines: List[LineWithMeta], colspan: int = 1, rowspan: int = 1, invisible: bool = False) -> None: + def __init__(self, lines: Optional[List[LineWithMeta]], colspan: int = 1, rowspan: int = 1, invisible: bool = False) -> None: """ :param lines: textual lines of the cell :param colspan: number of columns to span like in HTML format :param rowspan: number of rows to span like in HTML format :param invisible: indicator for displaying or hiding cell text """ - self.lines: List[LineWithMeta] = lines + self.lines: List[LineWithMeta] = [] if lines is None else lines self.colspan: int = colspan self.rowspan: int = rowspan self.invisible: bool = invisible diff --git a/dedoc/readers/pdf_reader/pdf_base_reader.py b/dedoc/readers/pdf_reader/pdf_base_reader.py index e986d7cd..4fd9fdec 100644 --- a/dedoc/readers/pdf_reader/pdf_base_reader.py +++ b/dedoc/readers/pdf_reader/pdf_base_reader.py @@ -2,7 +2,6 @@ from collections import namedtuple from typing import Dict, Iterator, List, Optional, Set, Tuple -import numpy as np from dedocutils.data_structures.bbox import BBox from numpy import ndarray @@ -13,7 +12,6 @@ from dedoc.readers.pdf_reader.data_classes.line_with_location import LineWithLocation from dedoc.readers.pdf_reader.data_classes.pdf_image_attachment import PdfImageAttachment from dedoc.readers.pdf_reader.data_classes.tables.scantable import ScanTable -from dedoc.readers.pdf_reader.pdf_image_reader.table_recognizer.gost_frame_recognizer import GOSTFrameRecognizer ParametersForParseDoc = namedtuple("ParametersForParseDoc", [ @@ -164,7 +162,7 @@ def _process_document_with_gost_frame(self, images: Iterator[ndarray], first_pag page_range = range(first_page, first_page + len(gost_analyzed_images)) gost_analyzed_images = dict(zip(page_range, gost_analyzed_images)) if isinstance(self, PdfTxtlayerReader): - self.gost_frame_boxes = dict(zip(page_range, [item[1] for item in gost_analyzed_images.values()])) + self.gost_frame_boxes = dict(zip(page_range, [(item[1], item[2]) for item in gost_analyzed_images.values()])) result = Parallel(n_jobs=self.config["n_jobs"])( delayed(self._process_one_page)(image, parameters, page_number, path) for page_number, (image, box, original_image_shape) in gost_analyzed_images.items() diff --git a/tests/unit_tests/test_module_gost_frame_recognizer.py b/tests/unit_tests/test_module_gost_frame_recognizer.py index 19d66a91..14e0d522 100644 --- a/tests/unit_tests/test_module_gost_frame_recognizer.py +++ b/tests/unit_tests/test_module_gost_frame_recognizer.py @@ -107,12 +107,9 @@ def __check_content(self, result: UnstructuredDocument) -> None: self.assertEqual(len(result.tables), 1) self.assertEqual(result.tables[0].cells[0][0].get_text(), "SAMPLE TEXT") self.assertTrue(len(result.tables[0].cells[0][0].lines[0].annotations) > 0) - # {"x_top_left": 0.37142857142857144, "y_top_left": 1.708680142687277, "width": 0.1815126050420168, "height": 0.022592152199762187, - # "page_width": 595, "page_height": 841} - self.assertEqual(result.tables[0].cells[1][0].get_text(), "1") self.assertEqual(len(result.tables[0].cells), 14) line: LineWithLocation = result.lines[0] self.assertEqual(line.line.strip(), "1. Sample text 1") - self.assertTrue(abs(line.location.bbox.x_top_left - 212) < 10) - self.assertTrue(abs(line.location.bbox.y_top_left - 1309) < 10) + # self.assertTrue(abs(line.location.bbox.x_top_left - 212) < 10) + # self.assertTrue(abs(line.location.bbox.y_top_left - 1309) < 10) From e5f829e5df5cd2049ef96d794716e8d9d665c841 Mon Sep 17 00:00:00 2001 From: Belyaeva Oksana Date: Thu, 14 Nov 2024 13:05:43 +0300 Subject: [PATCH 15/16] TLDR-850 udate tests for tabby reader --- scripts/test_words_bbox_extraction.py | 3 ++- .../unit_tests/test_module_gost_frame_recognizer.py | 12 ++++++++---- 2 files changed, 10 insertions(+), 5 deletions(-) diff --git a/scripts/test_words_bbox_extraction.py b/scripts/test_words_bbox_extraction.py index 03e2afa1..a42407bd 100644 --- a/scripts/test_words_bbox_extraction.py +++ b/scripts/test_words_bbox_extraction.py @@ -177,7 +177,8 @@ def test_pdf_documents(self) -> None: def test_gost_frame_documents(self) -> None: filename_parameters_outputdir = [ ["tables/gost_multipage_table_2.pdf", dict(pdf_with_text_layer="true", need_gost_frame_analysis="true"), "gost_frame_true"], - ["tables/gost_multipage_table_2.pdf", dict(pdf_with_text_layer="false", need_gost_frame_analysis="true"), "gost_frame_false"] + ["tables/gost_multipage_table_2.pdf", dict(pdf_with_text_layer="false", need_gost_frame_analysis="true"), "gost_frame_false"], + ["tables/gost_multipage_table_2.pdf", dict(pdf_with_text_layer="tabby", need_gost_frame_analysis="true"), "gost_frame_tabby"] ] for file_name, parameters, outputdir in filename_parameters_outputdir: diff --git a/tests/unit_tests/test_module_gost_frame_recognizer.py b/tests/unit_tests/test_module_gost_frame_recognizer.py index 14e0d522..a2c33f09 100644 --- a/tests/unit_tests/test_module_gost_frame_recognizer.py +++ b/tests/unit_tests/test_module_gost_frame_recognizer.py @@ -97,11 +97,19 @@ def test_pdf_txtlayer_reader(self) -> None: file_path = os.path.join(self.test_data_folder, "gost_multipage_table_2.pdf") result = self.pdf_txtlayer_reader.read(file_path=file_path, parameters={"need_gost_frame_analysis": "true"}) self.__check_content(result) + line: LineWithLocation = result.lines[0] + self.assertEqual(line.line.strip(), "1. Sample text 1") + self.assertTrue(abs(line.location.bbox.x_top_left - 212) < 10) + self.assertTrue(abs(line.location.bbox.y_top_left - 1309) < 10) def test_pdf_tabby_reader(self) -> None: file_path = os.path.join(self.test_data_folder, "gost_multipage_table_2.pdf") result = self.pdf_tabby_reader.read(file_path=file_path, parameters={"need_gost_frame_analysis": "true"}) self.__check_content(result) + line: LineWithLocation = result.lines[0] + self.assertEqual(line.line.strip(), "1. Sample text 1") + self.assertTrue(abs(line.location.bbox.x_top_left - 76) < 10) + self.assertTrue(abs(line.location.bbox.y_top_left - 476) < 10) def __check_content(self, result: UnstructuredDocument) -> None: self.assertEqual(len(result.tables), 1) @@ -109,7 +117,3 @@ def __check_content(self, result: UnstructuredDocument) -> None: self.assertTrue(len(result.tables[0].cells[0][0].lines[0].annotations) > 0) self.assertEqual(result.tables[0].cells[1][0].get_text(), "1") self.assertEqual(len(result.tables[0].cells), 14) - line: LineWithLocation = result.lines[0] - self.assertEqual(line.line.strip(), "1. Sample text 1") - # self.assertTrue(abs(line.location.bbox.x_top_left - 212) < 10) - # self.assertTrue(abs(line.location.bbox.y_top_left - 1309) < 10) From d2fdbb3f5a2669a11d845473b62849eb788d9fbc Mon Sep 17 00:00:00 2001 From: Belyaeva Oksana Date: Thu, 14 Nov 2024 15:50:42 +0300 Subject: [PATCH 16/16] TLDR-850 fixes after review --- .../test_api_module_table_recognizer.py | 44 +++++++++++++++++++ 1 file changed, 44 insertions(+) diff --git a/tests/api_tests/test_api_module_table_recognizer.py b/tests/api_tests/test_api_module_table_recognizer.py index a0f53753..a73b4ee5 100644 --- a/tests/api_tests/test_api_module_table_recognizer.py +++ b/tests/api_tests/test_api_module_table_recognizer.py @@ -1,3 +1,4 @@ +import json import os import unittest from typing import List @@ -11,6 +12,12 @@ class TestRecognizedTable(AbstractTestApiDocReader): def _get_abs_path(self, file_name: str) -> str: return os.path.join(self.data_directory_path, "tables", file_name) + def _test_bbox_annotations(self, node: dict, target_dict: dict) -> None: + annotations = [annotation for annotation in node["annotations"] if annotation["name"] == "bounding box"] + annotations_dict = json.loads(annotations[0]["value"]) + for key in target_dict: + self.assertAlmostEqual(float(annotations_dict[key]), target_dict[key], None, None, delta=0.05) + def test_api_table_recognition_3(self) -> None: file_name = "example_with_table16.jpg" res = self._send_request(file_name) @@ -218,7 +225,26 @@ def test_multipage_gost_table_image(self) -> None: file_name = "gost_multipage_table.pdf" result = self._send_request(file_name, data={"need_gost_frame_analysis": "True"}) # don't pass pdf_with_text_layer to check condition in PDFBaseReader self.assertTrue(len(result["content"]["tables"][0]["cells"]) > 35) + target_bbox_dict = { + "x_top_left": 0.14, + "y_top_left": 0.11, + "width": 0.07, + "height": 0.01, + "page_width": 1653, + "page_height": 2339 + } + self._test_bbox_annotations(result["content"]["structure"]["subparagraphs"][0], target_bbox_dict) + self.assertTrue("Состав квалификационных испытаний" in result["content"]["structure"]["subparagraphs"][0]["text"]) self.assertTrue("KR13" in result["content"]["tables"][0]["cells"][-1][0]["lines"][0]["text"]) # check the last row of multipage table + target_bbox_dict_1 = { + "x_top_left": 0.15, + "y_top_left": 0.58, + "width": 0.04, + "height": 0.009, + "page_width": 1653, + "page_height": 2339 + } + self._test_bbox_annotations(result["content"]["tables"][0]["cells"][-1][0]["lines"][0], target_bbox_dict_1) self.assertTrue("R13.1" in result["content"]["tables"][0]["cells"][-1][1]["lines"][0]["text"]) # check that it belongs to first and only table self.assertTrue("Испытание по проверке" in result["content"]["tables"][0]["cells"][-1][2]["lines"][0]["text"]) self.assertTrue("3.6" in result["content"]["tables"][0]["cells"][-1][3]["lines"][0]["text"]) @@ -244,4 +270,22 @@ def test_multipage_gost_table_with_text_layer_and_pages_param(self) -> None: self.assertEqual(len(result["content"]["tables"]), 1) self.assertEqual(len(result["content"]["tables"][0]["cells"]), 5) self.assertTrue("SAMPLE TEXT" in result["content"]["tables"][0]["cells"][0][0]["lines"][0]["text"]) + target_bbox_dict_1 = { + "x_top_left": 0.13, + "y_top_left": 0.07, + "width": 0.06, + "height": 0.007, + "page_width": 595, + "page_height": 841 + } + self._test_bbox_annotations(result["content"]["tables"][0]["cells"][0][0]["lines"][0], target_bbox_dict_1) self.assertTrue("2" in result["content"]["tables"][0]["cells"][-1][0]["lines"][0]["text"]) + target_bbox_dict_2 = { + "x_top_left": 0.13, + "y_top_left": 0.15, + "width": 0.005, + "height": 0.007, + "page_width": 595, + "page_height": 841 + } + self._test_bbox_annotations(result["content"]["tables"][0]["cells"][-1][0]["lines"][0], target_bbox_dict_2)