Statement ZIP files share filenames: inventory before extracting
Updated · 2 min read
Two statement ZIPs can both contain statement.pdf without containing the same statement. Keep each archive’s paths and extract into a new, separate directory before comparing file contents. Flattening all files into one folder can overwrite the very evidence needed to explain a missing month.
The desktop apps export date, description, and amount as CSV. Open CSV in Excel to save an XLSX workbook. Statement support varies: verify the result against your own PDF.
Preserve and extract separately
- Retain each original ZIP and its member-path inventory.
- In PowerShell 7.5, use
Expand-Archivewith a new, separate destination for each archive. Its normal behavior does not overwrite existing files; do not add-Forceto suppress a collision. - Compare extracted paths with the member inventory, preserving nested directories.
- Use
Get-FileHashwith SHA256 for content identity, then inspect account and period separately before choosing any working copy.
Microsoft documents Expand-Archive and Get-FileHash. The route concerns ZIP extraction and byte hashes, not proof of bank identity or permission to delete original evidence.
After extraction, compare original member paths with saved files. Nested directories are part of provenance, not clutter to discard before identification. If filename encoding or a damaged archive prevents a dependable inventory, keep the case unresolved rather than silently treating the visible filenames as complete.
Compare content and business identity separately
Use Get-FileHash with SHA256 to identify equal content. Same basename does not mean same bytes; equal hashes do not establish that the account and period are the expected ones. Inspect statement identity after the byte comparison, before choosing a retained copy or excluding a duplicate from processing.
These are actual SHA256 values of the fixture’s fictional byte strings, not real PDF files. Compare the full hashes, not just basenames:
| Archive and member | SHA256 | Decision |
|---|---|---|
| A / jan/statement.pdf | 72ed5e867435ed7d41dc25e93e59e9d9802eefbbb7446dda459a6c730ded5355 | Retain origin A |
| B / feb/statement.pdf | 209b61648d83f37b1fe836b770435d18b71897b4bee3cc0783ff239a9189a20d | Same basename as A, different bytes |
| C / copy.pdf | 72ed5e867435ed7d41dc25e93e59e9d9802eefbbb7446dda459a6c730ded5355 | Same bytes as A, different path |
There are three provenance records and two distinct byte strings. Identifying the equal pair does not verify the account or period, and does not authorize deleting an original.
The synthetic collision exercise gives two statement.pdf members different contents and a third, differently named member identical bytes to the first. Python computes actual SHA256 values and retains all original paths. It rejects basename-only deduplication while identifying the byte-equal pair. No real statements or PowerShell extraction were used.
Record archive, member path, saved location, content hash and verified account-period identity in the handoff. Unverified identities remain open; no file is deleted by the exercise. Use the separate multi-file data guide only after this file-level inventory is sound.
For a PDF-only bank source, download LocalExtract. It processes one PDF locally to date,description,amount CSV; it does not access platform accounts or synchronize accounting records.
Official sources and scope
Documentation checked October 16, 2026. Official reference 1 — ps-archive · Official reference 2 — ps-hash
LocalExtract Team
We build LocalExtract, a desktop bank statement converter. Questions or corrections? Contact · Editorial policy