perceptron01 commited on
Commit
7fe2877
·
verified ·
1 Parent(s): 6331876

Upload 5 files

Browse files
samples/generate_samples.py ADDED
@@ -0,0 +1,240 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ """Generate synthetic bank statements + ground-truth JSON.
2
+
3
+ Produces:
4
+ samples/sample_digital.pdf -- real reportlab table (exercises pdfplumber)
5
+ samples/sample_scan.png -- rendered + rotated + noised (exercises MiniCPM-V)
6
+ samples/sample_digital_truth.json -- ground-truth transactions (test fixture)
7
+ samples/sample_scan_truth.json -- same data, used for vision-accuracy check
8
+
9
+ No real bank data is used (privacy + licensing). Narrations are deliberately
10
+ messy to mimic real Indian bank statements.
11
+
12
+ Run: python samples/generate_samples.py
13
+ """
14
+
15
+ import json
16
+ import os
17
+ import random
18
+
19
+ HERE = os.path.dirname(os.path.abspath(__file__))
20
+
21
+ OPENING_BALANCE = 152340.50
22
+
23
+ # (narration, debit, credit) -- one tuple per transaction row.
24
+ # Narrations are intentionally messy and cover most ledger heads so the
25
+ # rules layer + reconciliation both get a real workout.
26
+ RAW = [
27
+ ("UPI/CR/512345678901/RAMESH TRADERS/PAYTM/Payment for goods", None, 45000.00),
28
+ ("NEFT-HDFC0001234-ACME PVT LTD-INV 4521", None, 128500.00),
29
+ ("UPI/DR/423451234567/SHARMA RENT/GPAY/April office rent", 35000.00, None),
30
+ ("ACH/NACH/SBILIFE INSURANCE/PREMIUM/POL 9921", 12500.00, None),
31
+ ("SALARY APR 2026 - STAFF PAYROLL BATCH 04", 86000.00, None),
32
+ ("ATM CSH WDL/AXIS/KANPUR MALL ROAD/04APR", 10000.00, None),
33
+ ("UPI/CR/612345098765/SUNIL ENTERPRISES/PHONEPE/sale", None, 22750.00),
34
+ ("GST PMT-CBIC-26AAAPL1234C1Z5-GSTR3B APR", 18900.00, None),
35
+ ("NEFT-ICIC0004567-MEGHA SUPPLIERS-PO 7781", 64200.00, None),
36
+ ("INT.PD-SAVINGS A/C-QTR ENDING", None, 1842.00),
37
+ ("BANK CHRG-SMS CHGS APR 2026", 23.60, None),
38
+ ("UPI/DR/734512345098/BSNL BROADBAND/INTERNET BILL", 1499.00, None),
39
+ ("RTGS-UTIB0000123-DELTA EXPORTS-SETTLEMENT", None, 215000.00),
40
+ ("ACH/NACH/HDFC HOME LOAN/EMI/LN44219", 28750.00, None),
41
+ ("UPI/DR/845612340987/KESHAV ELECTRICALS/utility KESCO bill", 6540.00, None),
42
+ ("CSH DEP/BRANCH/KANPUR/CASH DEPOSIT BY CLIENT", None, 50000.00),
43
+ ("TDS PMT-CPC-TDS Q4 26AAAPL1234C", 9400.00, None),
44
+ ("UPI/CR/923451234560/VIKAS AGENCY/sale receipt", None, 17800.00),
45
+ ("NEFT-PUNB0123456-RAVI CONSULTING-PROF FEES", 25000.00, None),
46
+ ("IRCTC TRAVEL/RAIL TICKET/PNR 8841200012", 3450.00, None),
47
+ ("UPI/DR/103451234561/SWIGGY/staff lunch conveyance", 1280.00, None),
48
+ ("ELECTRICITY KESCO BILL PMT/CONS 4412", 8920.00, None),
49
+ ("UPI/CR/213451234562/ANJALI STORES/PHONEPE/sale", None, 9650.00),
50
+ ("AMC CHGS-DEBIT CARD ANNUAL FEE", 590.00, None),
51
+ ("NEFT-SBIN0009988-OWN ACCOUNT TRANSFER-SELF", 40000.00, None),
52
+ ("UPI/DR/313451234563/GARG REPAIRS/AC servicing maintenance", 4200.00, None),
53
+ ("INCOME TAX PMT-CBDT-ADVANCE TAX 26AAAPL", 35000.00, None),
54
+ ("UPI/CR/413451234564/MOHIT TRADING/sale", None, 31200.00),
55
+ ("LIC OF INDIA/ACH/PREMIUM/POLICY 5512", 9800.00, None),
56
+ ("UPI/DR/513451234565/JIO RECHARGE/mobile postpaid", 799.00, None),
57
+ ("NEFT-YESB0001122-GLOBE IMPORTS-PURCHASE", 52400.00, None),
58
+ ("DRAWINGS-PROPRIETOR-PERSONAL WITHDRAWAL", 30000.00, None),
59
+ ("UPI/CR/613451234566/CAPITAL INTRODUCED BY PARTNER", None, 200000.00),
60
+ ("INT CREDIT-FIXED DEPOSIT INTEREST", None, 4521.00),
61
+ ("UPI/DR/713451234567/PETROL HPCL/fuel conveyance", 2500.00, None),
62
+ ("NEFT-KKBK0007788-ZENITH PVT LTD-INV 9921", None, 76300.00),
63
+ ("ATM CSH WDL/HDFC/CIVIL LINES/22APR", 15000.00, None),
64
+ ("UPI/DR/813451234568/PRINTWELL/office stationery purchase", 3120.00, None),
65
+ ("INTEREST PAID ON OVERDRAFT-OD A/C", 5640.00, None),
66
+ ("RTGS-HDFC0009090-NEXUS SOLUTIONS-FINAL PMT", None, 98000.00),
67
+ ]
68
+
69
+ DATES = None
70
+
71
+
72
+ def build_transactions():
73
+ """Return the ground-truth transaction list with running balances."""
74
+ txns = []
75
+ balance = OPENING_BALANCE
76
+ # Dates: spread across April 2026, monotonically non-decreasing.
77
+ day = 1
78
+ for i, (narration, debit, credit) in enumerate(RAW):
79
+ # advance the day every ~1-2 rows, stay within April
80
+ if i > 0 and i % 2 == 0:
81
+ day = min(day + 1, 30)
82
+ date_iso = f"2026-04-{day:02d}"
83
+ balance = round(balance - (debit or 0) + (credit or 0), 2)
84
+ ref = "".join([c for c in narration if c.isdigit()][:6]) or None
85
+ txns.append({
86
+ "date": date_iso,
87
+ "narration": narration,
88
+ "ref_no": ref,
89
+ "debit": debit,
90
+ "credit": credit,
91
+ "balance": balance,
92
+ })
93
+ return txns
94
+
95
+
96
+ def _printed_date(iso):
97
+ """ISO -> DD/MM/YYYY as printed on the statement."""
98
+ y, m, d = iso.split("-")
99
+ return f"{d}/{m}/{y}"
100
+
101
+
102
+ def _fmt_amt(v):
103
+ if v is None:
104
+ return ""
105
+ # Indian-style grouping is hard to parse; keep it plain with thousands commas
106
+ return f"{v:,.2f}"
107
+
108
+
109
+ def render_pdf(txns, path):
110
+ from reportlab.lib import colors
111
+ from reportlab.lib.pagesizes import A4
112
+ from reportlab.lib.units import mm
113
+ from reportlab.platypus import (SimpleDocTemplate, Table, TableStyle,
114
+ Paragraph, Spacer)
115
+ from reportlab.lib.styles import getSampleStyleSheet
116
+
117
+ styles = getSampleStyleSheet()
118
+ doc = SimpleDocTemplate(path, pagesize=A4,
119
+ leftMargin=10 * mm, rightMargin=10 * mm,
120
+ topMargin=12 * mm, bottomMargin=12 * mm)
121
+ story = []
122
+ story.append(Paragraph("STATE BANK STYLE DEMO — Account Statement", styles["Title"]))
123
+ story.append(Paragraph("Account: XXXXXX4412    Period: 01/04/2026 - 30/04/2026",
124
+ styles["Normal"]))
125
+ story.append(Paragraph(f"Opening Balance: {_fmt_amt(OPENING_BALANCE)}", styles["Normal"]))
126
+ story.append(Spacer(1, 6 * mm))
127
+
128
+ header = ["Date", "Narration", "Ref No", "Debit", "Credit", "Balance"]
129
+ data = [header]
130
+ narr_style = styles["BodyText"]
131
+ narr_style.fontSize = 7
132
+ narr_style.leading = 8
133
+ for t in txns:
134
+ data.append([
135
+ _printed_date(t["date"]),
136
+ Paragraph(t["narration"], narr_style),
137
+ t["ref_no"] or "",
138
+ _fmt_amt(t["debit"]),
139
+ _fmt_amt(t["credit"]),
140
+ _fmt_amt(t["balance"]),
141
+ ])
142
+
143
+ col_widths = [20 * mm, 78 * mm, 16 * mm, 22 * mm, 22 * mm, 24 * mm]
144
+ table = Table(data, colWidths=col_widths, repeatRows=1)
145
+ table.setStyle(TableStyle([
146
+ ("BACKGROUND", (0, 0), (-1, 0), colors.HexColor("#1a3c6e")),
147
+ ("TEXTCOLOR", (0, 0), (-1, 0), colors.white),
148
+ ("FONTSIZE", (0, 0), (-1, -1), 7),
149
+ ("FONTNAME", (0, 0), (-1, 0), "Helvetica-Bold"),
150
+ ("ALIGN", (3, 0), (5, -1), "RIGHT"),
151
+ ("GRID", (0, 0), (-1, -1), 0.4, colors.grey),
152
+ ("ROWBACKGROUNDS", (0, 1), (-1, -1), [colors.white, colors.HexColor("#eef3fa")]),
153
+ ("VALIGN", (0, 0), (-1, -1), "MIDDLE"),
154
+ ]))
155
+ story.append(table)
156
+ doc.build(story)
157
+
158
+
159
+ def render_scan(txns, path):
160
+ """Render a statement page to an image, then rotate + add noise to mimic a scan."""
161
+ from PIL import Image, ImageDraw, ImageFont
162
+
163
+ W, H = 1240, 1754 # ~A4 at 150dpi
164
+ img = Image.new("RGB", (W, H), "white")
165
+ draw = ImageDraw.Draw(img)
166
+ try:
167
+ font = ImageFont.truetype("arial.ttf", 16)
168
+ font_b = ImageFont.truetype("arialbd.ttf", 20)
169
+ font_s = ImageFont.truetype("arial.ttf", 13)
170
+ except Exception:
171
+ font = ImageFont.load_default()
172
+ font_b = font
173
+ font_s = font
174
+
175
+ draw.text((40, 30), "DEMO BANK — Account Statement (scanned)", fill="black", font=font_b)
176
+ draw.text((40, 64), "Account: XXXXXX4412 Period: 01/04/2026 - 30/04/2026",
177
+ fill="black", font=font_s)
178
+ draw.text((40, 84), f"Opening Balance: {_fmt_amt(OPENING_BALANCE)}", fill="black", font=font_s)
179
+
180
+ # column x positions
181
+ cols = [40, 140, 660, 760, 920, 1080]
182
+ y = 120
183
+ headers = ["Date", "Narration", "Ref", "Debit", "Credit", "Balance"]
184
+ for x, h in zip(cols, headers):
185
+ draw.text((x, y), h, fill="black", font=font)
186
+ y += 26
187
+ draw.line((40, y, W - 40, y), fill="black", width=1)
188
+ y += 6
189
+
190
+ for t in txns:
191
+ draw.text((cols[0], y), _printed_date(t["date"]), fill="black", font=font_s)
192
+ narr = t["narration"]
193
+ if len(narr) > 70:
194
+ narr = narr[:70]
195
+ draw.text((cols[1], y), narr, fill="black", font=font_s)
196
+ draw.text((cols[2], y), (t["ref_no"] or ""), fill="black", font=font_s)
197
+ draw.text((cols[3], y), _fmt_amt(t["debit"]), fill="black", font=font_s)
198
+ draw.text((cols[4], y), _fmt_amt(t["credit"]), fill="black", font=font_s)
199
+ draw.text((cols[5], y), _fmt_amt(t["balance"]), fill="black", font=font_s)
200
+ y += 30
201
+
202
+ # Rotate 1.5 deg and add mild gaussian-ish noise to simulate a scan.
203
+ img = img.rotate(1.5, expand=False, fillcolor="white")
204
+ px = img.load()
205
+ rnd = random.Random(42)
206
+ for _ in range(45000):
207
+ x = rnd.randint(0, W - 1)
208
+ yy = rnd.randint(0, H - 1)
209
+ v = rnd.randint(-25, 25)
210
+ r, g, b = px[x, yy]
211
+ px[x, yy] = (max(0, min(255, r + v)),
212
+ max(0, min(255, g + v)),
213
+ max(0, min(255, b + v)))
214
+ img.save(path, "PNG")
215
+
216
+
217
+ def main():
218
+ txns = build_transactions()
219
+
220
+ pdf_path = os.path.join(HERE, "sample_digital.pdf")
221
+ scan_path = os.path.join(HERE, "sample_scan.png")
222
+ truth_digital = os.path.join(HERE, "sample_digital_truth.json")
223
+ truth_scan = os.path.join(HERE, "sample_scan_truth.json")
224
+
225
+ render_pdf(txns, pdf_path)
226
+ render_scan(txns, scan_path)
227
+ with open(truth_digital, "w", encoding="utf-8") as f:
228
+ json.dump(txns, f, indent=2)
229
+ with open(truth_scan, "w", encoding="utf-8") as f:
230
+ json.dump(txns, f, indent=2)
231
+
232
+ print(f"Wrote {len(txns)} transactions")
233
+ print(f" {pdf_path}")
234
+ print(f" {scan_path}")
235
+ print(f" {truth_digital}")
236
+ print(f" {truth_scan}")
237
+
238
+
239
+ if __name__ == "__main__":
240
+ main()
samples/sample_digital.pdf ADDED
@@ -0,0 +1,93 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ %PDF-1.4
2
+ %���� ReportLab Generated PDF document (opensource)
3
+ 1 0 obj
4
+ <<
5
+ /F1 2 0 R /F2 3 0 R
6
+ >>
7
+ endobj
8
+ 2 0 obj
9
+ <<
10
+ /BaseFont /Helvetica /Encoding /WinAnsiEncoding /Name /F1 /Subtype /Type1 /Type /Font
11
+ >>
12
+ endobj
13
+ 3 0 obj
14
+ <<
15
+ /BaseFont /Helvetica-Bold /Encoding /WinAnsiEncoding /Name /F2 /Subtype /Type1 /Type /Font
16
+ >>
17
+ endobj
18
+ 4 0 obj
19
+ <<
20
+ /Contents 9 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 8 0 R /Resources <<
21
+ /Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ]
22
+ >> /Rotate 0 /Trans <<
23
+
24
+ >>
25
+ /Type /Page
26
+ >>
27
+ endobj
28
+ 5 0 obj
29
+ <<
30
+ /Contents 10 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 8 0 R /Resources <<
31
+ /Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ]
32
+ >> /Rotate 0 /Trans <<
33
+
34
+ >>
35
+ /Type /Page
36
+ >>
37
+ endobj
38
+ 6 0 obj
39
+ <<
40
+ /PageMode /UseNone /Pages 8 0 R /Type /Catalog
41
+ >>
42
+ endobj
43
+ 7 0 obj
44
+ <<
45
+ /Author (\(anonymous\)) /CreationDate (D:20260613051145+05'00') /Creator (\(unspecified\)) /Keywords () /ModDate (D:20260613051145+05'00') /Producer (ReportLab PDF Library - \(opensource\))
46
+ /Subject (\(unspecified\)) /Title (\(anonymous\)) /Trapped /False
47
+ >>
48
+ endobj
49
+ 8 0 obj
50
+ <<
51
+ /Count 2 /Kids [ 4 0 R 5 0 R ] /Type /Pages
52
+ >>
53
+ endobj
54
+ 9 0 obj
55
+ <<
56
+ /Filter [ /ASCII85Decode /FlateDecode ] /Length 4087
57
+ >>
58
+ stream
59
+ GatU7>Bci%&q9:VTuZL>%(ZQ4L,#s$?q^YtGNS6b-LLGO:HI`7Ve=?Rqj"D(-"DVt`i%:JX!ij$V7NT.!`48@oD@Jc!6Z:*f*EK-l:6B'90o,"V#KkU%nL[Ql4V5g#JM:kJPX6rJdNI^ldlY6!,?)&X1nsd(na.:_cTO+JW"qMW1_aL^f=B)FTRk+IKQVH/k`u0g$ZX?1%mp*nF6#?q$g;ApMYh*LZc-rJGS/rrWOj-15()u`TNbO*-F:P<5VTke0rg/0U)q0VZ9f`f"Zg_bn$Y&'f<D7!h_Nc*acYZ$6\m^oe=<(/-(6ITX?VT744eH-g7pL-V^dfh[e&RkHA9=s)e;=E;1.jL)iUSbFlg[$$HErOhC(3+`r"F+9b)lUas,`"ApSW>tc(F.<$_%`$\I3B5nq&0jogJ+_2!4`!!gr^uI(7W;L<MnVeKLR/Rb[)\VrKge\=nG6e:AKK+ApZ]IlE3M%\ALegWT@;pd.(;OY+r9SK!8Z$-mF=8$!IBG$@nEc>K,h)8LF%o3&rq$UsG0(.j1-L7(>r%$H:<t$h/t##BVe8i-cq>YEkntc1Or;1RWuLr&bTLNH1Pj.!1PdbJkA:Edd7()T=fcL_dHX1:WuG?O\rjts^1_LjXR1q3[`-BQ^T^q.-@*GCmfK?lL:sP.!=tX/HF4@l75&'BH*AeC>DQJ6r;QB^rpBLOI%DDb`:ZJe>5n*^#kF>RbX>!W81<?[EVSShG+P%0jDri9&\fC$N:I<%+G[%0<r#%B]:WZU[))qY57-T&S"?-&D<R&oZXLpc6Cl4T[g\]fAm_??>^?g8*0,#'#fXL"BU_s?:m]QZ.4_TXmcpoUh#AZ65OeI=Wg1*jqXX4=a1HHVm#7n+38J.V7RRm4RMe+?T>;:/f-`/f'kIl.d"QFL.XW^D4.iqY..mP2TagOh1[ufc$#animl\.`(Rrrt/6%sL/>@BYJE"!A=hS"7q5jqC(ti;sF`$25@7nQoL"m,NpZ)Sb%^Q4:>sL)b!]-dBSeT/0TOK_o<,':Od\G7%PTbD(-7ZJ:.$M=;f#!*Rkkj]9$+rAa*Zkm/?Tl0WJ?3iW8KIn8PX*0"6-DqKm#mqi+iS?9=:)nhSAH-6Go/n((ZQq#Ge*`P/^l8a:-b7Lq_H=S`%/u@S*kugfOZ06mAsA<r/U_,XGRa$ZXmlR:[BE1PsF[@'E3Lc_$O.O#:g1@rq@D6<Kor6*JfRcW:ErQiRc[H=DYOk1/X(`nHM6nJZ74$ar+H'%TUanE%>EulipFs5STfhK86E%E#u%7T5C\&(;qDMI9L2goJs%dRj]r`-.kZgdW-/+`17(m2P=er-NR5+#hf<*@Q+=f"U:0@1)1.p-(o@'fMZDbDnIS/".qBQg?5HV=n4U&M__CIOXY*iGu>pEO8Gi-%CSlIDNbhak4,fD9>fEPR7.6oq4[<0Tb1WukM]'G8$I,9K48%<iaj#]0TVs,a<W5iqOK2@Yp;tMBs:34gn6]>[#,_):2".EA1D,4!kEs-THY,VQmJ\EG0"E=XY`daXsJ.@`AUk;,#IZb,"k@:]-qj<pB-n0eS<i0RR1"/F6[-P<7+[`dK1"M:2!%\L;>E?BfJ1`V0VGDX$mcZVYRe)OV]Z7etqj<.l"J_;Q4>3lD#=5;4"a)Y)p_^nFT%cfeIIJJkbG4b1Ui/o_dC)WS(U=2s#?_D(G.36r:jO)sif@n(7l!/TSbU%m!bNnd,CtX<n4<YQdE2Lq8'M6=$nN6HCd:73^L\Fg<[;OghE4OXnPp/c]4'W=2CE;?N&^Ai@.KX\U]BOCd(`>U$678V`&ZjQ`V;j_P=-Q7!jmJY<BTWWJ<$#qhbhLrt$L/bX=uKVu\-YtD;_!m0V7=4Yor9'SH1[NaqiTW6OZ6qtUD`B7J$C2"Mff)>FH6Mr9;0qX4O^:\iV[6N=17+%XoU>-EIPF(Bq@MIN=WYBm-IkD(B?;])ho-%tKGUa&7JHQ/e@n&SSMF)k?SoAie;GJ>Gd9&F1R?DkTM(&4=6'<O6?)DV+<Sl'2j4!Pc0-EgU%fC<oHEoh>WIGOEjUDn[G8R_Q),A^Z=rr7IJ]NL"$/mG"8ME50aVnoZ'])_'qAWF'H#[s&H<6r[_qorHA5cM=6"t0)!i$_rbL[9L-H[kKVrefe2$Kn],$/Fa-_DEil;_uLnr%`9s8GPT5M*A1:anu*oR=Y6207tXM_nCQS$5l_#fR94A'*ps/D3I=I\J"q]0/CBh53,naJ[T\*oAhD.!Rm;*0/on[edARTkUR22,cCKXL+BFBuh+dP)YkZI_qdGc-R)'$_0<?E"6&l=l!'Do-HL"]-p+N&)pl$mB]tAq2;!&?%_GgWGHNRqEe,CY@El1`cbRbMVWrd&kE:t_A*7GE(0@KV_YDbfiGXX19ZYb%+K!=PLNp$QQQP^_XA/7;,EO`Vi.G-J79i8[E&Fa[g>tbO,.P8)_m&HCp<9(i,Ejm;L&7oXW'N3odO1MK`cS3Is_Ap5G'%s"Wh!As#g5PXqNaOY#ZJ[>X=:NAp/-$JM*HB[Br%_TYgjF\lc?WXjQfS#:uE<V=gBOTk$G8A!eY"JUB!fF4H_n@m:3rAdt7A:W'0A%<-'-"=(rG)CssmAR"k)0Y]GV@FQ2Gp7hJo-qcj+n&kGfW*8AJ`/1.`Qq+Vc['7p92Z'D@?+L'CCW2Oa6^H"NYI8GWR3Kf(V+=5=W*Fm%chC9`j-1"9F<m(^(:XX-fVG-kKbehl-ETXrnogE+fSCSLJ]Y3'K(83Ce-,\aRH>^mKOGECG+Wdd`URi<f.p[oeTFcIg-<3X5uQroOu3j@2)DZ+ROE=mY"E*N1H"2"BAs8Xl[A,=Ka:GL>OTL78*(YR8J.e1j[Cp!EHqHRpi(W[g7G>>G(4mg4$6^O/,^='j8rNRWgN03VX\3%Wo`2i45>WMdd9?D*X\@n8knnZDQD:7B@TUWeVe*`.pLNJQ`AQ@^f2gG]#gts=#4$gr6]$k[Cn@`;h40,TIli.];R2adE[-=\(toL`[Aj`IbQQQFeq!)$B93u<GeS/M7@'&iYGJ302d?-Q[i%.&6X0Pd/6@JQGu0(:MIO8,>[_4p'slonJu#].\kF\ZK^akbo3$$;/N&&D:TIth)G"`"3kfMAtU`GoD>E-_m7QURJ0ps'+QqW#Y1A/hd6:A4rqH5QQL/'muLglTN,/OUI/$QJS+U-3WWp"H`EoN+$5iT'=>=qB\?u`(NrUCP"Km!&Ai[sc?@A6Ut\fqT\,S4ilWUW6='0sNLFYK;AD"*<kDCGZ?`GR@O,!)&QIR6[)@'8lZ?,rT4HDMDP.\TRY[J`;']_\b=/$!.BPOl+gQr$UHMQcA#OU6XTHsb_c;>fTa@SMe;Zf<:<NJ=C3pSi?1H^.UEZfDKP=bZ]@B)?<cVEULrqbSCsG^&V7B<F)XWfi2HAM*[G7EUr+$FCh'KErG(*duTEjI3=f(fN3rLT`e6DiF2`7RNG50+HS_Zled8N/%%B>K_3Xd6k6`@#n&#ho51,_mmq-*Ke/r`4^lCC0l&n-b;fG&>f4oRQ+c.dnL.f2,<^$^h_*KV9.ZZ^aqKdq*E,H@acBT)0RVJ-]qDJkb!@O:iaW(VV9EoA;La/(?uSDlF0#sjao-0>>0amuu0Cf\(6g%)pE7Qg>E9$7D;ru?o\?"bldDpo,*BqA9F`cfDG<-^56`RUa9PsnWf8(F]"r#J"YbAZCt^H]5%]d3FAs)S(SV;T,US!)[?(K]\e#uh??$3KRBdkX5<'g42J[=$H/It\`J,W<:ul\*Bh./P:<]1V-;I?GF^P'fX&8!:cU'FaVt_j84GC<0gVU'!:6YU/7Z)KOJni(sm8W?L/&m#gA5-2@X#jKKr8JJrR]P/olt3G_9#TS=Gp,WJa*G&#)W$%!pXCe9#IL)dWI3`&0R>7r!U+bqWU%FgJ,9u99H`'$K*6]8fEMit:5ogu5`6b^+_-]q.5q0HA>KKD'<d%X@_U<q8]:sYl_d%X@_U<q8]:sYl_d%X@_U<q8]:sYkj#1^&XTfMpsUE8-2DgmJjgO%H/PA6`*Q0W9dd"BUk@,F1/8P*h**M$Tt+r^$,h@=l(J=Qa<6e?sN:9!.G91d]aC[/t&"$ZVnk21;4~>endstream
60
+ endobj
61
+ 10 0 obj
62
+ <<
63
+ /Filter [ /ASCII85Decode /FlateDecode ] /Length 847
64
+ >>
65
+ stream
66
+ Gat%!?$"^R&:EYBggccRq=JCeOT\5>:d^2jp6AP)-52QnU!q,umod)PP@0QH_9C`<<d-&;F$LZ!4kEngZQ,\G#;..V!*;i[5(dk3qpXR7;d*cGN='-'=V<6R7O[<<Xl7'KeA<\C8obeB."CsYBNcrPF3Q7N%0N1e=hs0a,cf<hZoUT`<`U;M[ZVqbS"R.*:Qjj??-44`\:t1*Y$]Ru91e$D!CPNlS;^L\iWJ7#OIn_7#\L0Bgb[DZ=fur"pNMDW,*=Fb>'bKqC`pDUba"u`S>u9O']6*<LT*mbAooH\]I\MR;Q0^SW'0lkFh>4h\%>#Jo_.cap*f#Z\;a<R!ek@1lq^@FM"]19R.^kL*(!tGKa!ZT]p#M91`Bq&_PP[cd).-V,+GJ*fC<Ymh/>4'lN/,NcLIWVK\q:&orln5]:DS5LN]>i]pA*=!A0ZmET4O7cNQ)B%VHN#s,!1l!07lRZ1_p)@im"pe(J`J5T!!*pbmJQI':4oj>\)3F'&jK,FGA_s"_khfl3)bjs(^4kATjp0(OgD9c(BZeEc7>W<Ml325O8Zg107kn+'5gf=ENJ=:RNT-Kg1uBaiG[\#Uf+kHh4:3_u)paYY$`@.?7,K84TO[8P%BN%NN/AWV$/_i_pDJPU+1-a@Qq]pU`^/+M'2b+hc)^$.9->jp!fZ\om<,6%C"I_3@0.Ct50^Y-(RmPF&>Pcka/P%24j#T7Hr@6-Tsj3r]ho!S!,mVj8%j[:*?>N5,`"^DDV\?`!O6aXlI?11^Oq^CAp`U96XfEX!PkbZi[Rj&B)8.2*S=[1PV-aXg2^ihX;%eX>DR6Bo[a*'*:p>oebPm4mC"+'tJO<;F^~>endstream
67
+ endobj
68
+ xref
69
+ 0 11
70
+ 0000000000 65535 f
71
+ 0000000061 00000 n
72
+ 0000000102 00000 n
73
+ 0000000209 00000 n
74
+ 0000000321 00000 n
75
+ 0000000524 00000 n
76
+ 0000000728 00000 n
77
+ 0000000796 00000 n
78
+ 0000001076 00000 n
79
+ 0000001141 00000 n
80
+ 0000005319 00000 n
81
+ trailer
82
+ <<
83
+ /ID
84
+ [<c29a6a2e4bbaf2b532c0617c2451c2f8><c29a6a2e4bbaf2b532c0617c2451c2f8>]
85
+ % ReportLab generated PDF document -- digest (opensource)
86
+
87
+ /Info 7 0 R
88
+ /Root 6 0 R
89
+ /Size 11
90
+ >>
91
+ startxref
92
+ 6257
93
+ %%EOF
samples/sample_digital_truth.json ADDED
@@ -0,0 +1,322 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ [
2
+ {
3
+ "date": "2026-04-01",
4
+ "narration": "UPI/CR/512345678901/RAMESH TRADERS/PAYTM/Payment for goods",
5
+ "ref_no": "512345",
6
+ "debit": null,
7
+ "credit": 45000.0,
8
+ "balance": 197340.5
9
+ },
10
+ {
11
+ "date": "2026-04-01",
12
+ "narration": "NEFT-HDFC0001234-ACME PVT LTD-INV 4521",
13
+ "ref_no": "000123",
14
+ "debit": null,
15
+ "credit": 128500.0,
16
+ "balance": 325840.5
17
+ },
18
+ {
19
+ "date": "2026-04-02",
20
+ "narration": "UPI/DR/423451234567/SHARMA RENT/GPAY/April office rent",
21
+ "ref_no": "423451",
22
+ "debit": 35000.0,
23
+ "credit": null,
24
+ "balance": 290840.5
25
+ },
26
+ {
27
+ "date": "2026-04-02",
28
+ "narration": "ACH/NACH/SBILIFE INSURANCE/PREMIUM/POL 9921",
29
+ "ref_no": "9921",
30
+ "debit": 12500.0,
31
+ "credit": null,
32
+ "balance": 278340.5
33
+ },
34
+ {
35
+ "date": "2026-04-03",
36
+ "narration": "SALARY APR 2026 - STAFF PAYROLL BATCH 04",
37
+ "ref_no": "202604",
38
+ "debit": 86000.0,
39
+ "credit": null,
40
+ "balance": 192340.5
41
+ },
42
+ {
43
+ "date": "2026-04-03",
44
+ "narration": "ATM CSH WDL/AXIS/KANPUR MALL ROAD/04APR",
45
+ "ref_no": "04",
46
+ "debit": 10000.0,
47
+ "credit": null,
48
+ "balance": 182340.5
49
+ },
50
+ {
51
+ "date": "2026-04-04",
52
+ "narration": "UPI/CR/612345098765/SUNIL ENTERPRISES/PHONEPE/sale",
53
+ "ref_no": "612345",
54
+ "debit": null,
55
+ "credit": 22750.0,
56
+ "balance": 205090.5
57
+ },
58
+ {
59
+ "date": "2026-04-04",
60
+ "narration": "GST PMT-CBIC-26AAAPL1234C1Z5-GSTR3B APR",
61
+ "ref_no": "261234",
62
+ "debit": 18900.0,
63
+ "credit": null,
64
+ "balance": 186190.5
65
+ },
66
+ {
67
+ "date": "2026-04-05",
68
+ "narration": "NEFT-ICIC0004567-MEGHA SUPPLIERS-PO 7781",
69
+ "ref_no": "000456",
70
+ "debit": 64200.0,
71
+ "credit": null,
72
+ "balance": 121990.5
73
+ },
74
+ {
75
+ "date": "2026-04-05",
76
+ "narration": "INT.PD-SAVINGS A/C-QTR ENDING",
77
+ "ref_no": null,
78
+ "debit": null,
79
+ "credit": 1842.0,
80
+ "balance": 123832.5
81
+ },
82
+ {
83
+ "date": "2026-04-06",
84
+ "narration": "BANK CHRG-SMS CHGS APR 2026",
85
+ "ref_no": "2026",
86
+ "debit": 23.6,
87
+ "credit": null,
88
+ "balance": 123808.9
89
+ },
90
+ {
91
+ "date": "2026-04-06",
92
+ "narration": "UPI/DR/734512345098/BSNL BROADBAND/INTERNET BILL",
93
+ "ref_no": "734512",
94
+ "debit": 1499.0,
95
+ "credit": null,
96
+ "balance": 122309.9
97
+ },
98
+ {
99
+ "date": "2026-04-07",
100
+ "narration": "RTGS-UTIB0000123-DELTA EXPORTS-SETTLEMENT",
101
+ "ref_no": "000012",
102
+ "debit": null,
103
+ "credit": 215000.0,
104
+ "balance": 337309.9
105
+ },
106
+ {
107
+ "date": "2026-04-07",
108
+ "narration": "ACH/NACH/HDFC HOME LOAN/EMI/LN44219",
109
+ "ref_no": "44219",
110
+ "debit": 28750.0,
111
+ "credit": null,
112
+ "balance": 308559.9
113
+ },
114
+ {
115
+ "date": "2026-04-08",
116
+ "narration": "UPI/DR/845612340987/KESHAV ELECTRICALS/utility KESCO bill",
117
+ "ref_no": "845612",
118
+ "debit": 6540.0,
119
+ "credit": null,
120
+ "balance": 302019.9
121
+ },
122
+ {
123
+ "date": "2026-04-08",
124
+ "narration": "CSH DEP/BRANCH/KANPUR/CASH DEPOSIT BY CLIENT",
125
+ "ref_no": null,
126
+ "debit": null,
127
+ "credit": 50000.0,
128
+ "balance": 352019.9
129
+ },
130
+ {
131
+ "date": "2026-04-09",
132
+ "narration": "TDS PMT-CPC-TDS Q4 26AAAPL1234C",
133
+ "ref_no": "426123",
134
+ "debit": 9400.0,
135
+ "credit": null,
136
+ "balance": 342619.9
137
+ },
138
+ {
139
+ "date": "2026-04-09",
140
+ "narration": "UPI/CR/923451234560/VIKAS AGENCY/sale receipt",
141
+ "ref_no": "923451",
142
+ "debit": null,
143
+ "credit": 17800.0,
144
+ "balance": 360419.9
145
+ },
146
+ {
147
+ "date": "2026-04-10",
148
+ "narration": "NEFT-PUNB0123456-RAVI CONSULTING-PROF FEES",
149
+ "ref_no": "012345",
150
+ "debit": 25000.0,
151
+ "credit": null,
152
+ "balance": 335419.9
153
+ },
154
+ {
155
+ "date": "2026-04-10",
156
+ "narration": "IRCTC TRAVEL/RAIL TICKET/PNR 8841200012",
157
+ "ref_no": "884120",
158
+ "debit": 3450.0,
159
+ "credit": null,
160
+ "balance": 331969.9
161
+ },
162
+ {
163
+ "date": "2026-04-11",
164
+ "narration": "UPI/DR/103451234561/SWIGGY/staff lunch conveyance",
165
+ "ref_no": "103451",
166
+ "debit": 1280.0,
167
+ "credit": null,
168
+ "balance": 330689.9
169
+ },
170
+ {
171
+ "date": "2026-04-11",
172
+ "narration": "ELECTRICITY KESCO BILL PMT/CONS 4412",
173
+ "ref_no": "4412",
174
+ "debit": 8920.0,
175
+ "credit": null,
176
+ "balance": 321769.9
177
+ },
178
+ {
179
+ "date": "2026-04-12",
180
+ "narration": "UPI/CR/213451234562/ANJALI STORES/PHONEPE/sale",
181
+ "ref_no": "213451",
182
+ "debit": null,
183
+ "credit": 9650.0,
184
+ "balance": 331419.9
185
+ },
186
+ {
187
+ "date": "2026-04-12",
188
+ "narration": "AMC CHGS-DEBIT CARD ANNUAL FEE",
189
+ "ref_no": null,
190
+ "debit": 590.0,
191
+ "credit": null,
192
+ "balance": 330829.9
193
+ },
194
+ {
195
+ "date": "2026-04-13",
196
+ "narration": "NEFT-SBIN0009988-OWN ACCOUNT TRANSFER-SELF",
197
+ "ref_no": "000998",
198
+ "debit": 40000.0,
199
+ "credit": null,
200
+ "balance": 290829.9
201
+ },
202
+ {
203
+ "date": "2026-04-13",
204
+ "narration": "UPI/DR/313451234563/GARG REPAIRS/AC servicing maintenance",
205
+ "ref_no": "313451",
206
+ "debit": 4200.0,
207
+ "credit": null,
208
+ "balance": 286629.9
209
+ },
210
+ {
211
+ "date": "2026-04-14",
212
+ "narration": "INCOME TAX PMT-CBDT-ADVANCE TAX 26AAAPL",
213
+ "ref_no": "26",
214
+ "debit": 35000.0,
215
+ "credit": null,
216
+ "balance": 251629.9
217
+ },
218
+ {
219
+ "date": "2026-04-14",
220
+ "narration": "UPI/CR/413451234564/MOHIT TRADING/sale",
221
+ "ref_no": "413451",
222
+ "debit": null,
223
+ "credit": 31200.0,
224
+ "balance": 282829.9
225
+ },
226
+ {
227
+ "date": "2026-04-15",
228
+ "narration": "LIC OF INDIA/ACH/PREMIUM/POLICY 5512",
229
+ "ref_no": "5512",
230
+ "debit": 9800.0,
231
+ "credit": null,
232
+ "balance": 273029.9
233
+ },
234
+ {
235
+ "date": "2026-04-15",
236
+ "narration": "UPI/DR/513451234565/JIO RECHARGE/mobile postpaid",
237
+ "ref_no": "513451",
238
+ "debit": 799.0,
239
+ "credit": null,
240
+ "balance": 272230.9
241
+ },
242
+ {
243
+ "date": "2026-04-16",
244
+ "narration": "NEFT-YESB0001122-GLOBE IMPORTS-PURCHASE",
245
+ "ref_no": "000112",
246
+ "debit": 52400.0,
247
+ "credit": null,
248
+ "balance": 219830.9
249
+ },
250
+ {
251
+ "date": "2026-04-16",
252
+ "narration": "DRAWINGS-PROPRIETOR-PERSONAL WITHDRAWAL",
253
+ "ref_no": null,
254
+ "debit": 30000.0,
255
+ "credit": null,
256
+ "balance": 189830.9
257
+ },
258
+ {
259
+ "date": "2026-04-17",
260
+ "narration": "UPI/CR/613451234566/CAPITAL INTRODUCED BY PARTNER",
261
+ "ref_no": "613451",
262
+ "debit": null,
263
+ "credit": 200000.0,
264
+ "balance": 389830.9
265
+ },
266
+ {
267
+ "date": "2026-04-17",
268
+ "narration": "INT CREDIT-FIXED DEPOSIT INTEREST",
269
+ "ref_no": null,
270
+ "debit": null,
271
+ "credit": 4521.0,
272
+ "balance": 394351.9
273
+ },
274
+ {
275
+ "date": "2026-04-18",
276
+ "narration": "UPI/DR/713451234567/PETROL HPCL/fuel conveyance",
277
+ "ref_no": "713451",
278
+ "debit": 2500.0,
279
+ "credit": null,
280
+ "balance": 391851.9
281
+ },
282
+ {
283
+ "date": "2026-04-18",
284
+ "narration": "NEFT-KKBK0007788-ZENITH PVT LTD-INV 9921",
285
+ "ref_no": "000778",
286
+ "debit": null,
287
+ "credit": 76300.0,
288
+ "balance": 468151.9
289
+ },
290
+ {
291
+ "date": "2026-04-19",
292
+ "narration": "ATM CSH WDL/HDFC/CIVIL LINES/22APR",
293
+ "ref_no": "22",
294
+ "debit": 15000.0,
295
+ "credit": null,
296
+ "balance": 453151.9
297
+ },
298
+ {
299
+ "date": "2026-04-19",
300
+ "narration": "UPI/DR/813451234568/PRINTWELL/office stationery purchase",
301
+ "ref_no": "813451",
302
+ "debit": 3120.0,
303
+ "credit": null,
304
+ "balance": 450031.9
305
+ },
306
+ {
307
+ "date": "2026-04-20",
308
+ "narration": "INTEREST PAID ON OVERDRAFT-OD A/C",
309
+ "ref_no": null,
310
+ "debit": 5640.0,
311
+ "credit": null,
312
+ "balance": 444391.9
313
+ },
314
+ {
315
+ "date": "2026-04-20",
316
+ "narration": "RTGS-HDFC0009090-NEXUS SOLUTIONS-FINAL PMT",
317
+ "ref_no": "000909",
318
+ "debit": null,
319
+ "credit": 98000.0,
320
+ "balance": 542391.9
321
+ }
322
+ ]
samples/sample_scan.png ADDED

Git LFS Details

  • SHA256: c98f8da95696e5b38e672a4d24e01772beccba45f3c0d8ad9fe5fa55907b6fa6
  • Pointer size: 131 Bytes
  • Size of remote file: 406 kB
samples/sample_scan_truth.json ADDED
@@ -0,0 +1,322 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ [
2
+ {
3
+ "date": "2026-04-01",
4
+ "narration": "UPI/CR/512345678901/RAMESH TRADERS/PAYTM/Payment for goods",
5
+ "ref_no": "512345",
6
+ "debit": null,
7
+ "credit": 45000.0,
8
+ "balance": 197340.5
9
+ },
10
+ {
11
+ "date": "2026-04-01",
12
+ "narration": "NEFT-HDFC0001234-ACME PVT LTD-INV 4521",
13
+ "ref_no": "000123",
14
+ "debit": null,
15
+ "credit": 128500.0,
16
+ "balance": 325840.5
17
+ },
18
+ {
19
+ "date": "2026-04-02",
20
+ "narration": "UPI/DR/423451234567/SHARMA RENT/GPAY/April office rent",
21
+ "ref_no": "423451",
22
+ "debit": 35000.0,
23
+ "credit": null,
24
+ "balance": 290840.5
25
+ },
26
+ {
27
+ "date": "2026-04-02",
28
+ "narration": "ACH/NACH/SBILIFE INSURANCE/PREMIUM/POL 9921",
29
+ "ref_no": "9921",
30
+ "debit": 12500.0,
31
+ "credit": null,
32
+ "balance": 278340.5
33
+ },
34
+ {
35
+ "date": "2026-04-03",
36
+ "narration": "SALARY APR 2026 - STAFF PAYROLL BATCH 04",
37
+ "ref_no": "202604",
38
+ "debit": 86000.0,
39
+ "credit": null,
40
+ "balance": 192340.5
41
+ },
42
+ {
43
+ "date": "2026-04-03",
44
+ "narration": "ATM CSH WDL/AXIS/KANPUR MALL ROAD/04APR",
45
+ "ref_no": "04",
46
+ "debit": 10000.0,
47
+ "credit": null,
48
+ "balance": 182340.5
49
+ },
50
+ {
51
+ "date": "2026-04-04",
52
+ "narration": "UPI/CR/612345098765/SUNIL ENTERPRISES/PHONEPE/sale",
53
+ "ref_no": "612345",
54
+ "debit": null,
55
+ "credit": 22750.0,
56
+ "balance": 205090.5
57
+ },
58
+ {
59
+ "date": "2026-04-04",
60
+ "narration": "GST PMT-CBIC-26AAAPL1234C1Z5-GSTR3B APR",
61
+ "ref_no": "261234",
62
+ "debit": 18900.0,
63
+ "credit": null,
64
+ "balance": 186190.5
65
+ },
66
+ {
67
+ "date": "2026-04-05",
68
+ "narration": "NEFT-ICIC0004567-MEGHA SUPPLIERS-PO 7781",
69
+ "ref_no": "000456",
70
+ "debit": 64200.0,
71
+ "credit": null,
72
+ "balance": 121990.5
73
+ },
74
+ {
75
+ "date": "2026-04-05",
76
+ "narration": "INT.PD-SAVINGS A/C-QTR ENDING",
77
+ "ref_no": null,
78
+ "debit": null,
79
+ "credit": 1842.0,
80
+ "balance": 123832.5
81
+ },
82
+ {
83
+ "date": "2026-04-06",
84
+ "narration": "BANK CHRG-SMS CHGS APR 2026",
85
+ "ref_no": "2026",
86
+ "debit": 23.6,
87
+ "credit": null,
88
+ "balance": 123808.9
89
+ },
90
+ {
91
+ "date": "2026-04-06",
92
+ "narration": "UPI/DR/734512345098/BSNL BROADBAND/INTERNET BILL",
93
+ "ref_no": "734512",
94
+ "debit": 1499.0,
95
+ "credit": null,
96
+ "balance": 122309.9
97
+ },
98
+ {
99
+ "date": "2026-04-07",
100
+ "narration": "RTGS-UTIB0000123-DELTA EXPORTS-SETTLEMENT",
101
+ "ref_no": "000012",
102
+ "debit": null,
103
+ "credit": 215000.0,
104
+ "balance": 337309.9
105
+ },
106
+ {
107
+ "date": "2026-04-07",
108
+ "narration": "ACH/NACH/HDFC HOME LOAN/EMI/LN44219",
109
+ "ref_no": "44219",
110
+ "debit": 28750.0,
111
+ "credit": null,
112
+ "balance": 308559.9
113
+ },
114
+ {
115
+ "date": "2026-04-08",
116
+ "narration": "UPI/DR/845612340987/KESHAV ELECTRICALS/utility KESCO bill",
117
+ "ref_no": "845612",
118
+ "debit": 6540.0,
119
+ "credit": null,
120
+ "balance": 302019.9
121
+ },
122
+ {
123
+ "date": "2026-04-08",
124
+ "narration": "CSH DEP/BRANCH/KANPUR/CASH DEPOSIT BY CLIENT",
125
+ "ref_no": null,
126
+ "debit": null,
127
+ "credit": 50000.0,
128
+ "balance": 352019.9
129
+ },
130
+ {
131
+ "date": "2026-04-09",
132
+ "narration": "TDS PMT-CPC-TDS Q4 26AAAPL1234C",
133
+ "ref_no": "426123",
134
+ "debit": 9400.0,
135
+ "credit": null,
136
+ "balance": 342619.9
137
+ },
138
+ {
139
+ "date": "2026-04-09",
140
+ "narration": "UPI/CR/923451234560/VIKAS AGENCY/sale receipt",
141
+ "ref_no": "923451",
142
+ "debit": null,
143
+ "credit": 17800.0,
144
+ "balance": 360419.9
145
+ },
146
+ {
147
+ "date": "2026-04-10",
148
+ "narration": "NEFT-PUNB0123456-RAVI CONSULTING-PROF FEES",
149
+ "ref_no": "012345",
150
+ "debit": 25000.0,
151
+ "credit": null,
152
+ "balance": 335419.9
153
+ },
154
+ {
155
+ "date": "2026-04-10",
156
+ "narration": "IRCTC TRAVEL/RAIL TICKET/PNR 8841200012",
157
+ "ref_no": "884120",
158
+ "debit": 3450.0,
159
+ "credit": null,
160
+ "balance": 331969.9
161
+ },
162
+ {
163
+ "date": "2026-04-11",
164
+ "narration": "UPI/DR/103451234561/SWIGGY/staff lunch conveyance",
165
+ "ref_no": "103451",
166
+ "debit": 1280.0,
167
+ "credit": null,
168
+ "balance": 330689.9
169
+ },
170
+ {
171
+ "date": "2026-04-11",
172
+ "narration": "ELECTRICITY KESCO BILL PMT/CONS 4412",
173
+ "ref_no": "4412",
174
+ "debit": 8920.0,
175
+ "credit": null,
176
+ "balance": 321769.9
177
+ },
178
+ {
179
+ "date": "2026-04-12",
180
+ "narration": "UPI/CR/213451234562/ANJALI STORES/PHONEPE/sale",
181
+ "ref_no": "213451",
182
+ "debit": null,
183
+ "credit": 9650.0,
184
+ "balance": 331419.9
185
+ },
186
+ {
187
+ "date": "2026-04-12",
188
+ "narration": "AMC CHGS-DEBIT CARD ANNUAL FEE",
189
+ "ref_no": null,
190
+ "debit": 590.0,
191
+ "credit": null,
192
+ "balance": 330829.9
193
+ },
194
+ {
195
+ "date": "2026-04-13",
196
+ "narration": "NEFT-SBIN0009988-OWN ACCOUNT TRANSFER-SELF",
197
+ "ref_no": "000998",
198
+ "debit": 40000.0,
199
+ "credit": null,
200
+ "balance": 290829.9
201
+ },
202
+ {
203
+ "date": "2026-04-13",
204
+ "narration": "UPI/DR/313451234563/GARG REPAIRS/AC servicing maintenance",
205
+ "ref_no": "313451",
206
+ "debit": 4200.0,
207
+ "credit": null,
208
+ "balance": 286629.9
209
+ },
210
+ {
211
+ "date": "2026-04-14",
212
+ "narration": "INCOME TAX PMT-CBDT-ADVANCE TAX 26AAAPL",
213
+ "ref_no": "26",
214
+ "debit": 35000.0,
215
+ "credit": null,
216
+ "balance": 251629.9
217
+ },
218
+ {
219
+ "date": "2026-04-14",
220
+ "narration": "UPI/CR/413451234564/MOHIT TRADING/sale",
221
+ "ref_no": "413451",
222
+ "debit": null,
223
+ "credit": 31200.0,
224
+ "balance": 282829.9
225
+ },
226
+ {
227
+ "date": "2026-04-15",
228
+ "narration": "LIC OF INDIA/ACH/PREMIUM/POLICY 5512",
229
+ "ref_no": "5512",
230
+ "debit": 9800.0,
231
+ "credit": null,
232
+ "balance": 273029.9
233
+ },
234
+ {
235
+ "date": "2026-04-15",
236
+ "narration": "UPI/DR/513451234565/JIO RECHARGE/mobile postpaid",
237
+ "ref_no": "513451",
238
+ "debit": 799.0,
239
+ "credit": null,
240
+ "balance": 272230.9
241
+ },
242
+ {
243
+ "date": "2026-04-16",
244
+ "narration": "NEFT-YESB0001122-GLOBE IMPORTS-PURCHASE",
245
+ "ref_no": "000112",
246
+ "debit": 52400.0,
247
+ "credit": null,
248
+ "balance": 219830.9
249
+ },
250
+ {
251
+ "date": "2026-04-16",
252
+ "narration": "DRAWINGS-PROPRIETOR-PERSONAL WITHDRAWAL",
253
+ "ref_no": null,
254
+ "debit": 30000.0,
255
+ "credit": null,
256
+ "balance": 189830.9
257
+ },
258
+ {
259
+ "date": "2026-04-17",
260
+ "narration": "UPI/CR/613451234566/CAPITAL INTRODUCED BY PARTNER",
261
+ "ref_no": "613451",
262
+ "debit": null,
263
+ "credit": 200000.0,
264
+ "balance": 389830.9
265
+ },
266
+ {
267
+ "date": "2026-04-17",
268
+ "narration": "INT CREDIT-FIXED DEPOSIT INTEREST",
269
+ "ref_no": null,
270
+ "debit": null,
271
+ "credit": 4521.0,
272
+ "balance": 394351.9
273
+ },
274
+ {
275
+ "date": "2026-04-18",
276
+ "narration": "UPI/DR/713451234567/PETROL HPCL/fuel conveyance",
277
+ "ref_no": "713451",
278
+ "debit": 2500.0,
279
+ "credit": null,
280
+ "balance": 391851.9
281
+ },
282
+ {
283
+ "date": "2026-04-18",
284
+ "narration": "NEFT-KKBK0007788-ZENITH PVT LTD-INV 9921",
285
+ "ref_no": "000778",
286
+ "debit": null,
287
+ "credit": 76300.0,
288
+ "balance": 468151.9
289
+ },
290
+ {
291
+ "date": "2026-04-19",
292
+ "narration": "ATM CSH WDL/HDFC/CIVIL LINES/22APR",
293
+ "ref_no": "22",
294
+ "debit": 15000.0,
295
+ "credit": null,
296
+ "balance": 453151.9
297
+ },
298
+ {
299
+ "date": "2026-04-19",
300
+ "narration": "UPI/DR/813451234568/PRINTWELL/office stationery purchase",
301
+ "ref_no": "813451",
302
+ "debit": 3120.0,
303
+ "credit": null,
304
+ "balance": 450031.9
305
+ },
306
+ {
307
+ "date": "2026-04-20",
308
+ "narration": "INTEREST PAID ON OVERDRAFT-OD A/C",
309
+ "ref_no": null,
310
+ "debit": 5640.0,
311
+ "credit": null,
312
+ "balance": 444391.9
313
+ },
314
+ {
315
+ "date": "2026-04-20",
316
+ "narration": "RTGS-HDFC0009090-NEXUS SOLUTIONS-FINAL PMT",
317
+ "ref_no": "000909",
318
+ "debit": null,
319
+ "credit": 98000.0,
320
+ "balance": 542391.9
321
+ }
322
+ ]