draw_bbox.py 1.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  1. from magic_pdf.libs.commons import fitz # PyMuPDF
  2. from magic_pdf.pdf_parse_by_ocr import parse_pdf_by_ocr
  3. import json
  4. def read_json_file(file_path):
  5. with open(file_path, 'r') as f:
  6. data = json.load(f)
  7. return data
  8. # PDF文件路径
  9. pdf_path = "D:\\projects\\Magic-PDF\\ocr_demo\\ocr_0_org.pdf"
  10. doc = fitz.open(pdf_path) # Open the PDF
  11. # 你的数据
  12. data = [[[-2, 0, 603, 80, 24]], [[-3, 0, 602, 80, 24]]]
  13. ocr_json_file_path = r"D:\projects\Magic-PDF\ocr_demo\ocr_0.json"
  14. ocr_pdf_info = read_json_file(ocr_json_file_path)
  15. pdf_info_dict = parse_pdf_by_ocr(ocr_pdf_info)
  16. data_list = []
  17. for page in pdf_info_dict.values():
  18. page_list = []
  19. blocks = page.get("preproc_blocks")
  20. for block in blocks:
  21. lines = block.get("lines")
  22. for line in lines:
  23. spans = line.get("spans")
  24. for span in spans:
  25. page_list.append(span["bbox"])
  26. data_list.append(page_list)
  27. # 对每个页面进行处理
  28. for i, page in enumerate(doc):
  29. # 获取当前页面的数据
  30. page_data = data_list[i]
  31. for img in page_data:
  32. x0, y0, x1, y1 = img
  33. rect_coords = fitz.Rect(x0, y0, x1, y1) # Define the rectangle
  34. page.draw_rect(rect_coords, color=(1, 0, 0), fill=None, width=1.5, overlay=True) # Draw the rectangle
  35. # Save the PDF
  36. doc.save("D:\\projects\\Magic-PDF\\ocr_demo\\ocr_0_new1.pdf")