Skip to content

einfacharchiv/extractor

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

12 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Extract billing data from text

Software License

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.