client.py 1.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849
  1. #!/usr/bin/env python
  2. import argparse
  3. import sys
  4. from pathlib import Path
  5. from paddlex_hps_client import triton_request, utils
  6. from tritonclient import grpc as triton_grpc
  7. def main():
  8. parser = argparse.ArgumentParser()
  9. parser.add_argument("--file", type=str, required=True)
  10. parser.add_argument("--file-type", type=int, choices=[0, 1])
  11. parser.add_argument("--no-visualization", action="store_true")
  12. parser.add_argument("--url", type=str, default="localhost:8001")
  13. args = parser.parse_args()
  14. client = triton_grpc.InferenceServerClient(args.url)
  15. input_ = {"file": utils.prepare_input_file(args.file)}
  16. if args.file_type is not None:
  17. input_["fileType"] = args.file_type
  18. if args.no_visualization:
  19. input_["visualize"] = False
  20. output = triton_request(client, "layout-parsing", input_)
  21. if output["errorCode"] != 0:
  22. print(f"Error code: {output['errorCode']}", file=sys.stderr)
  23. print(f"Error message: {output['errorMsg']}", file=sys.stderr)
  24. sys.exit(1)
  25. result = output["result"]
  26. for i, res in enumerate(result["layoutParsingResults"]):
  27. print(res["prunedResult"])
  28. md_dir = Path(f"markdown_{i}")
  29. md_dir.mkdir(exist_ok=True)
  30. (md_dir / "doc.md").write_text(res["markdown"]["text"])
  31. for img_path, img in res["markdown"]["images"].items():
  32. img_path = md_dir / img_path
  33. img_path.parent.mkdir(parents=True, exist_ok=True)
  34. utils.save_output_file(img, img_path)
  35. print(f"Markdown document saved at {md_dir / 'doc.md'}")
  36. for img_name, img in res["outputImages"].items():
  37. img_path = f"{img_name}_{i}.jpg"
  38. utils.save_output_file(img, img_path)
  39. print(f"Output image saved at {img_path}")
  40. if __name__ == "__main__":
  41. main()