{"id":51005475,"url":"https://github.com/ibnu-umer/finance-parser","last_synced_at":"2026-06-20T20:02:09.136Z","repository":{"id":319486623,"uuid":"1078820873","full_name":"ibnu-umer/finance-parser","owner":"ibnu-umer","description":"Extract and analyze bank or payment transaction data from PDF statements — all in one unified CLI tool.","archived":false,"fork":false,"pushed_at":"2025-10-29T12:16:55.000Z","size":29,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"master","last_synced_at":"2025-10-29T14:15:36.607Z","etag":null,"topics":["bank","bank-state","bank-statement-parser","banking","canara-bank","cli","command-line-interface","command-line-tool","csv","google","google-pay","gpay","json","pdf-parser","python"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/ibnu-umer.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-10-18T13:51:30.000Z","updated_at":"2025-10-29T12:13:53.000Z","dependencies_parsed_at":"2025-10-29T14:15:39.015Z","dependency_job_id":"8c8dbabf-763e-4c9d-8de4-d39435f7f165","html_url":"https://github.com/ibnu-umer/finance-parser","commit_stats":null,"previous_names":["ibnu-umer/gpay-parser","ibnu-umer/finance-parser"],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/ibnu-umer/finance-parser","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ibnu-umer%2Ffinance-parser","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ibnu-umer%2Ffinance-parser/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ibnu-umer%2Ffinance-parser/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ibnu-umer%2Ffinance-parser/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ibnu-umer","download_url":"https://codeload.github.com/ibnu-umer/finance-parser/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ibnu-umer%2Ffinance-parser/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":34583589,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-06-20T02:00:06.407Z","response_time":98,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["bank","bank-state","bank-statement-parser","banking","canara-bank","cli","command-line-interface","command-line-tool","csv","google","google-pay","gpay","json","pdf-parser","python"],"created_at":"2026-06-20T20:02:00.078Z","updated_at":"2026-06-20T20:02:09.131Z","avatar_url":"https://github.com/ibnu-umer.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# 🧾 Finance Parser\n\nExtract and analyze **bank or payment transaction data** from PDF statements — an all-in-one CLI tool.  \nThe **Finance Parser** reads PDFs (GPay, Canara Bank, etc.), extracts structured transaction details, and exports them to **CSV or JSON** for easy analysis or integration.\n\n## 🚀 Features\n\n- ⚙️ **Multi-bank support** (GPay, Canara, and extendable to others)\n- 📄 **Smart PDF parsing** using Camelot / pdfplumber\n- 🧩 **CLI tool** for easy automation\n- 🧹 **Data normalization \u0026 cleaning**\n- 📊 **Exports to CSV and JSON**\n- 🔒 Fully offline — no external APIs required\n\n## 🏗️ Project Structure\n\n```plaintext\nfinance-parser/\n├── src/\n│   └── finance_parser/\n│       ├── __init__.py\n│       ├── __main__.py             # CLI entry point\n│       ├── main.py                 # Core logic\n│       ├── canara_parser.py        # Bank-specific parsers\n│       ├── gpay_parser.py\n│       └── utils/                  # Shared helpers\n├── media/\n│   └── sample_statement.pdf        # Example input\n├── output/\n│   ├── transactions.csv\n│   └── transactions.json\n├── pyproject.toml                  # Build system \u0026 CLI entry config\n├── requirements.txt\n└── README.md\n```\n\n## ⚙️ Setup\n\n### 1️⃣ Clone the repo\n```bash\ngit clone https://github.com/ibnu-umer/finance-parser.git\ncd finance-parser\n```\n\n### 2️⃣ Install dependencies\n```bash\npip install -r requirements.txt\n```\n\n### 3️⃣ Add your statement PDF\nPlace your bank statement (e.g., GPay, Canara) inside the `media/` folder.\n\n## 🧩 Usage\n\n### Basic Command\n```bash\npython -m finance_parser --file \"media/canara_statement.pdf\" --type canara --format csv\n```\n\nOr, if installed as a package:\n```bash\nfinance-parser --file \"media/canara_statement.pdf\" --type canara --format csv\n```\n\n## ⚙️ CLI Options\n\n| Flag | Description | Example |\n|------|--------------|---------|\n| `-f`, `--file` | Path to PDF file | `--file media/canara_statement.pdf` |\n| `-t`, `--type` | Bank/statement type (`gpay`, `canara`, etc.) | `--type canara` |\n| `-o`, `--output` | Output folder | `--output output/` |\n| `--format` | Output format (`csv`, `json`, or `both`) | `--format both` |\n| `-p`, `--privacy` | Processing mode (`raw`, `clean`, or `masked`) | `--privacy clean` |\n\nExample:\n```bash\nfinance-parser --file media/canara_statement.pdf --type canara --format both --privacy masked\n```\n\n## 🧠 How It Works\n\n1. Detects and reads statement text using Camelot or pdfplumber.\n2. Chooses the correct parser based on `--type`.\n3. Extracts structured transaction data (date, description, debit/credit, balance, etc.).\n4. Applies normalization, masking, or cleaning if requested.\n5. Outputs the data in CSV or JSON formats.\n\n## 🧰 Dependencies\n\n- camelot-py / pdfplumber – PDF parsing  \n- pandas – Data manipulation  \n- argparse – Command-line interface  \n- re – Regex-based parsing  \n\nInstall manually if needed:\n```bash\npip install camelot-py pdfplumber pandas\n```\n\n## 🧼 Output\n\n### GPay\n\n- `date` – Transaction date  \n- `time` – Transaction time  \n- `type` – Credit/Debit  \n- `payee` – Counterparty / Payee name  \n- `txn_id` – UPI Transaction ID  \n- `account` – Account  \n- `amount` – Transaction amount  \n\n### Canara\n\n- `date` – Transaction date  \n- `time` – Transaction time  \n- `txn_type` – Credit/Debit  \n- `mode` – UPI, NEFT, IMPS, etc.  \n- `txn_id` – Transaction ID (for UPI/IMPS)  \n- `bank_code` – 4-letter bank code  \n- `payee` – Counterparty / Payee name  \n- `upi_id` – UPI ID if available  \n- `amount` – Transaction amount  \n- `balance` – Account balance after transaction  \n- `cheque_no` – Cheque number if present  \n\n## 🥧 Sensitive Fields\n\nSome transaction fields contain sensitive information. These are handled differently depending on the output mode.\n\n### Sensitive Fields by Source\n\n- **Canara Bank**\n  - `upi_id`\n  - `txn_id`\n  - `cheque_no`\n\n- **GPay**\n  - `txn_id`\n\n### Output Modes\n\n1. **Raw**\n   - All columns are included.\n   - Sensitive fields are **not masked**.\n\n2. **Masked**\n   - All columns are included.\n   - Sensitive fields are **masked** (partial hiding of UPI IDs, txn IDs, cheque numbers).\n\n3. **Clean**\n   - All sensitive fields are **dropped** from the output.\n   - Only non-sensitive columns remain.\n\nThis ensures privacy while maintaining flexibility for analysis.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fibnu-umer%2Ffinance-parser","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fibnu-umer%2Ffinance-parser","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fibnu-umer%2Ffinance-parser/lists"}