|
import matplotlib.pyplot as plt |
|
import matplotlib.patches as patches |
|
from PIL import ImageDraw |
|
|
|
|
|
def visualize_detected_tables(img, det_tables): |
|
plt.imshow(img, interpolation="lanczos") |
|
fig = plt.gcf() |
|
fig.set_size_inches(20, 20) |
|
ax = plt.gca() |
|
|
|
for det_table in det_tables: |
|
bbox = det_table['bbox'] |
|
facecolor = (1, 0, 0.45) if det_table['label'] == 'table' else (0.95, 0.6, 0.1) |
|
edgecolor = facecolor |
|
alpha = 0.3 |
|
linewidth = 2 |
|
hatch='//////' |
|
|
|
rect = patches.Rectangle(bbox[:2], bbox[2]-bbox[0], bbox[3]-bbox[1], linewidth=linewidth, |
|
edgecolor='none', facecolor=facecolor, alpha=0.1) |
|
ax.add_patch(rect) |
|
rect = patches.Rectangle(bbox[:2], bbox[2]-bbox[0], bbox[3]-bbox[1], linewidth=linewidth, |
|
edgecolor=edgecolor, facecolor='none', linestyle='-', alpha=alpha) |
|
ax.add_patch(rect) |
|
rect = patches.Rectangle(bbox[:2], bbox[2]-bbox[0], bbox[3]-bbox[1], linewidth=0, |
|
edgecolor=edgecolor, facecolor='none', linestyle='-', hatch=hatch, alpha=0.2) |
|
ax.add_patch(rect) |
|
|
|
plt.xticks([], []) |
|
plt.yticks([], []) |
|
plt.axis('off') |
|
plt.show() |
|
|
|
|
|
def visualize_cropped_table(cropped_table, cells): |
|
cropped_table_visualized = cropped_table.copy() |
|
draw = ImageDraw.Draw(cropped_table_visualized) |
|
|
|
for cell in cells: |
|
draw.rectangle(cell["bbox"], outline="red") |
|
|
|
plt.imshow(cropped_table_visualized) |
|
plt.axis('off') |
|
plt.show() |
|
|