Spaces:
Running
Running
File size: 4,454 Bytes
b611f38 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 | """
Generate sample document images for demonstration and testing.
"""
from PIL import Image, ImageDraw, ImageFont
import os
def create_sample_receipt(path: str):
os.makedirs(os.path.dirname(path), exist_ok=True)
img = Image.new("RGB", (600, 750), color="#FFFFFF")
draw = ImageDraw.Draw(img)
# Header
draw.rectangle([(20, 20), (580, 730)], outline="#D0D5DD", width=2)
draw.text((220, 40), "TECH COFFEE ROASTERS", fill="#101828")
draw.text((235, 65), "123 Innovation Way, Suite 400", fill="#475467")
draw.text((265, 85), "Tel: (555) 019-2834", fill="#475467")
draw.line([(40, 115), (560, 115)], fill="#E4E7EC", width=1)
# Metadata
draw.text((40, 130), "Receipt #: TCR-2026-8942", fill="#101828")
draw.text((40, 150), "Date: 2026-08-26 14:22", fill="#475467")
draw.text((40, 170), "Server: Alex M.", fill="#475467")
draw.line([(40, 200), (560, 200)], fill="#101828", width=2)
# Table Header
draw.text((40, 215), "ITEM", fill="#101828")
draw.text((320, 215), "QTY", fill="#101828")
draw.text((420, 215), "PRICE", fill="#101828")
draw.text((500, 215), "TOTAL", fill="#101828")
draw.line([(40, 240), (560, 240)], fill="#E4E7EC", width=1)
# Items
items = [
("Single Origin Pour Over", "2", "$4.50", "$9.00"),
("Oat Milk Vanilla Latte", "1", "$5.75", "$5.75"),
("Almond Croissant", "2", "$4.25", "$8.50"),
("Avocado Sourdough Toast", "1", "$12.00", "$12.00"),
("Matcha Green Tea", "1", "$5.00", "$5.00"),
]
y = 260
for name, qty, price, total in items:
draw.text((40, y), name, fill="#344054")
draw.text((330, y), qty, fill="#344054")
draw.text((420, y), price, fill="#344054")
draw.text((500, y), total, fill="#344054")
y += 35
draw.line([(40, y + 10), (560, y + 10)], fill="#E4E7EC", width=1)
y += 30
# Totals
draw.text((380, y), "Subtotal:", fill="#475467")
draw.text((500, y), "$40.25", fill="#101828")
y += 25
draw.text((380, y), "Tax (8.25%):", fill="#475467")
draw.text((500, y), "$3.32", fill="#101828")
y += 25
draw.text((380, y), "Total Due:", fill="#101828")
draw.text((500, y), "$43.57", fill="#101828")
draw.line([(40, y + 40), (560, y + 40)], fill="#101828", width=2)
y += 60
draw.text((200, y), "Thank you for your visit!", fill="#475467")
draw.text((180, y + 25), "Scan QR code to join our rewards program", fill="#98A2B3")
img.save(path)
print(f"Generated sample receipt at: {path}")
def create_sample_table_doc(path: str):
os.makedirs(os.path.dirname(path), exist_ok=True)
img = Image.new("RGB", (700, 500), color="#FFFFFF")
draw = ImageDraw.Draw(img)
draw.rectangle([(20, 20), (680, 480)], outline="#E4E7EC", width=2)
draw.text((40, 40), "QUARTERLY PERFORMANCE REPORT 2026", fill="#101828")
draw.text((40, 65), "Department: AI Research & Systems", fill="#475467")
# Draw table
table_top = 110
draw.rectangle([(40, table_top), (660, table_top + 40)], fill="#F8F9FA", outline="#D0D5DD")
draw.text((50, table_top + 12), "Model Name", fill="#101828")
draw.text((220, table_top + 12), "Throughput (t/s)", fill="#101828")
draw.text((380, table_top + 12), "Accuracy (%)", fill="#101828")
draw.text((520, table_top + 12), "Latency (ms)", fill="#101828")
rows = [
("DeepSeek-OCR", "142.5", "96.8%", "18.2"),
("Qwen3-VL", "118.0", "97.4%", "24.1"),
("PP-StructureV3", "88.4", "94.9%", "31.0"),
("NuExtract3", "130.2", "96.1%", "21.5"),
("PP-OCRv5", "210.6", "93.8%", "11.4"),
("olmOCR", "95.7", "98.2%", "29.8"),
]
curr_y = table_top + 40
for name, tp, acc, lat in rows:
draw.rectangle([(40, curr_y), (660, curr_y + 35)], outline="#E4E7EC")
draw.text((50, curr_y + 10), name, fill="#344054")
draw.text((220, curr_y + 10), tp, fill="#344054")
draw.text((380, curr_y + 10), acc, fill="#344054")
draw.text((520, curr_y + 10), lat, fill="#344054")
curr_y += 35
draw.text((40, curr_y + 30), "Summary: All models achieved target latency within SLA thresholds.", fill="#475467")
img.save(path)
print(f"Generated sample table doc at: {path}")
if __name__ == "__main__":
create_sample_receipt("d:/OCR/sample_data/sample_receipt.png")
create_sample_table_doc("d:/OCR/sample_data/sample_table.png")
|