einfacharchiv / extractor
Extract billing data from text
Requires
- php: ^7.0 || ^8.0
- commerceguys/intl: ~1.0
- league/iso3166: ^4.3
- ronanguilloux/isocodes: ~2.1
README
This package provides an easy way to extract billing data from text. We use it in our German SaaS product einfachArchiv.
Requirements
PHP 7.0 and later.
Installation
You can install this package via Composer. Run the following command:
composer require einfacharchiv/extractor
Usage
Extracting billing data is easy.
$text = <<<EOT Rechnungsnummer: 4711 Rechnungsdatum: 20.11.2077 Rechnungsbetrag: 119,00 € ... EOT; // Pass the text and the locales (the methods return the values in the same order) $extractor = new \einfachArchiv\Extractor\Extractor($text, ['de', 'en']); // Available methods $extractor->findAmounts(); $extractor->findBics(); $extractor->findCompanyNames(); $extractor->findCompanyRegisterIds(); $extractor->findCustomerIds(); $extractor->findDates(); $extractor->findEmails(); $extractor->findIbans(); $extractor->findInvoiceIds(); $extractor->findPaymentReferences(); $extractor->findTaxNumbers(); $extractor->findTypes(); $extractor->findVatNumbers(); $extractor->findWebsites();
If no matches were found, the methods return an empty array.
The method ->findAmounts()
returns an array like this one:
[ [ 'amount' => 119, 'currency' => 'EUR', ], ... ];
All amounts are returned as floats
.
The method ->findCompanyRegisterIds()
returns an array like this one:
[ [ 'area' => 'HRB', 'number' => '123456', 'office' => 'Stuttgart', ], ... ];
The invoice date is, if present, a valid date and can be used like this:
$dates = $extractor->findDates(); \Carbon\Carbon::parse($dates[0])->toDateString();
The method ->findTaxNumbers()
returns an array like this one:
[ [ 'number' => '12345/67890', 'state' => 'BW', ], ... ];
The method ->findTypes()
returns the following types:
[ 'invoice', 'credit-note', 'reminder', 'salary-statement', 'bank-statement', 'contract', 'balance-sheet', 'tax-assessment-note', ];
Contributing
Contributions are welcome.
We accept contributions via Pull Requests on Github.
Find yourself stuck using the package? Found a bug? Do you have general questions or suggestions for improvement? Feel free to create an issue on GitHub, we'll try to address it as soon as possible.
If you've found a security issue, please email support@einfacharchiv.com instead of using the issue tracker.
Happy coding!
Credits
License
The MIT License (MIT). Please see License File for more information.