Signature-Detection / scripts /execution_status.py
MnLgt's picture
"hi"
f725299
import os
from scripts.signature_blocks import SignatureBlockModel
from typing import List, Any, Tuple
def flatten_list(xss: List[List[Any]]) -> List[Any]:
return [x for xs in xss for x in xs]
def agreement_status(labels: List[str]) -> str:
if labels:
if len(set(labels)) > 1:
return "Partially Executed"
elif list(set(labels))[0] == "SIGNED_BLOCK":
return "Fully Executed"
elif list(set(labels))[0] == "UNSIGNED_BLOCK":
return "Unsigned"
else:
return "Unknown"
def execution_status(
images: List[Any], show: bool = False
) -> (int, str, List[Any], List[Any]):
if isinstance(images, list):
labels = []
boxes = []
crops = []
for page in images:
model = SignatureBlockModel(page)
if model.predictions[0]["boxes"].shape[0] > 0:
page_labels = model._get_labels_names()
labels.append(page_labels)
boxes.extend(model.get_box_crops())
crops.extend(model.get_boxes())
if show:
boxes = model.show_boxes()
# page.close()
num_sig_pages = len(labels)
execution_status = agreement_status(flatten_list(labels))
return num_sig_pages, execution_status, boxes, crops
else:
return None, None, None, None
if __name__ == "__main__":
from gabriel.parsers.pdf_parser import ParsePDF
filepath = "/Users/jordandavis/GitHub/gabriel/gabriel/datasets/MASTER_REVIEWED/SIGNATURE_PAGE/1a90afa457f328fc7f560d9b49af7b8f.pdf"
image = list(ParsePDF(filepath).yield_image())[0]
num_sig_pages, status, boxes, crops = execution_status(image)
print(f"Num Sig Pages: {num_sig_pages}")
print(f"Status: {status}")
print(f"Boxes: {boxes}")
print(f"Crops: {crops}")