invoice2data 0.4.5__tar.gz → 0.4.7__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (290) hide show
  1. {invoice2data-0.4.5/src/invoice2data.egg-info → invoice2data-0.4.7}/PKG-INFO +96 -123
  2. {invoice2data-0.4.5 → invoice2data-0.4.7}/README.md +54 -98
  3. invoice2data-0.4.7/pyproject.toml +183 -0
  4. invoice2data-0.4.7/setup.cfg +4 -0
  5. invoice2data-0.4.7/src/invoice2data/__init__.py +3 -0
  6. invoice2data-0.4.7/src/invoice2data/__main__.py +353 -0
  7. invoice2data-0.4.7/src/invoice2data/extract/__init__.py +1 -0
  8. invoice2data-0.4.7/src/invoice2data/extract/invoice_template.py +386 -0
  9. invoice2data-0.4.7/src/invoice2data/extract/loader.py +153 -0
  10. {invoice2data-0.4.5 → invoice2data-0.4.7}/src/invoice2data/extract/parsers/__init__.py +1 -1
  11. {invoice2data-0.4.5 → invoice2data-0.4.7}/src/invoice2data/extract/parsers/__interface__.py +1 -2
  12. {invoice2data-0.4.5 → invoice2data-0.4.7}/src/invoice2data/extract/parsers/lines.py +120 -30
  13. invoice2data-0.4.7/src/invoice2data/extract/parsers/regex.py +119 -0
  14. invoice2data-0.4.7/src/invoice2data/extract/parsers/static.py +27 -0
  15. invoice2data-0.4.7/src/invoice2data/extract/plugins/__init__.py +1 -0
  16. {invoice2data-0.4.5 → invoice2data-0.4.7}/src/invoice2data/extract/plugins/__interface__.py +1 -2
  17. invoice2data-0.4.7/src/invoice2data/extract/plugins/lines.py +31 -0
  18. invoice2data-0.4.7/src/invoice2data/extract/plugins/tables.py +221 -0
  19. {invoice2data-0.4.5 → invoice2data-0.4.7}/src/invoice2data/extract/templates/au/au.com.opal.yml +5 -5
  20. {invoice2data-0.4.5 → invoice2data-0.4.7}/src/invoice2data/extract/templates/be/be.accor.invest.ibis.yml +11 -11
  21. {invoice2data-0.4.5 → invoice2data-0.4.7}/src/invoice2data/extract/templates/be/be.accor.invest.novotel.yml +10 -10
  22. {invoice2data-0.4.5 → invoice2data-0.4.7}/src/invoice2data/extract/templates/be/be.boucherie.pochet.yml +4 -4
  23. {invoice2data-0.4.5 → invoice2data-0.4.7}/src/invoice2data/extract/templates/be/be.cebeo.yml +4 -4
  24. {invoice2data-0.4.5 → invoice2data-0.4.7}/src/invoice2data/extract/templates/be/be.eg_retail.yml +2 -2
  25. {invoice2data-0.4.5 → invoice2data-0.4.7}/src/invoice2data/extract/templates/be/be.lampiris.facture-dacompte.yml +8 -8
  26. {invoice2data-0.4.5 → invoice2data-0.4.7}/src/invoice2data/extract/templates/be/be.lampiris.factuur.yml +6 -6
  27. {invoice2data-0.4.5 → invoice2data-0.4.7}/src/invoice2data/extract/templates/be/be.lampiris.regularisation.yml +7 -7
  28. {invoice2data-0.4.5 → invoice2data-0.4.7}/src/invoice2data/extract/templates/be/be.melchior-vins.yml +4 -4
  29. {invoice2data-0.4.5 → invoice2data-0.4.7}/src/invoice2data/extract/templates/be/be.proximus.yml +3 -3
  30. {invoice2data-0.4.5 → invoice2data-0.4.7}/src/invoice2data/extract/templates/be/be.scarlet.yml +8 -8
  31. {invoice2data-0.4.5 → invoice2data-0.4.7}/src/invoice2data/extract/templates/be/be.securex.social.yml +4 -4
  32. {invoice2data-0.4.5 → invoice2data-0.4.7}/src/invoice2data/extract/templates/ch/ch.pcengines.yml +2 -2
  33. {invoice2data-0.4.5 → invoice2data-0.4.7}/src/invoice2data/extract/templates/com/com.AzureInterior.yml +9 -9
  34. {invoice2data-0.4.5 → invoice2data-0.4.7}/src/invoice2data/extract/templates/com/com.amazon.aws.yml +7 -7
  35. {invoice2data-0.4.5 → invoice2data-0.4.7}/src/invoice2data/extract/templates/com/com.apple.yml +3 -3
  36. {invoice2data-0.4.5 → invoice2data-0.4.7}/src/invoice2data/extract/templates/com/com.apps4rent.yml +3 -3
  37. {invoice2data-0.4.5 → invoice2data-0.4.7}/src/invoice2data/extract/templates/com/com.binarylife.yml +3 -3
  38. {invoice2data-0.4.5 → invoice2data-0.4.7}/src/invoice2data/extract/templates/com/com.bloomberg.yml +2 -2
  39. invoice2data-0.4.7/src/invoice2data/extract/templates/com/com.cloudflare.yml +80 -0
  40. {invoice2data-0.4.5 → invoice2data-0.4.7}/src/invoice2data/extract/templates/com/com.cloudns.yml +2 -2
  41. {invoice2data-0.4.5 → invoice2data-0.4.7}/src/invoice2data/extract/templates/com/com.datadoghq.yml +2 -2
  42. {invoice2data-0.4.5 → invoice2data-0.4.7}/src/invoice2data/extract/templates/com/com.digitalocean.yml +3 -3
  43. {invoice2data-0.4.5 → invoice2data-0.4.7}/src/invoice2data/extract/templates/com/com.envato.yml +1 -1
  44. invoice2data-0.4.7/src/invoice2data/extract/templates/com/com.eur.aliexpress.json +44 -0
  45. {invoice2data-0.4.5 → invoice2data-0.4.7}/src/invoice2data/extract/templates/com/com.expressvpn.yml +2 -2
  46. {invoice2data-0.4.5 → invoice2data-0.4.7}/src/invoice2data/extract/templates/com/com.expressvpn_prio6.yml +3 -3
  47. invoice2data-0.4.7/src/invoice2data/extract/templates/com/com.flipkart.WSRetail.json +14 -0
  48. {invoice2data-0.4.5 → invoice2data-0.4.7}/src/invoice2data/extract/templates/com/com.ftserussell.yml +2 -2
  49. {invoice2data-0.4.5 → invoice2data-0.4.7}/src/invoice2data/extract/templates/com/com.github.yml +2 -2
  50. {invoice2data-0.4.5 → invoice2data-0.4.7}/src/invoice2data/extract/templates/com/com.globalsign.yml +2 -2
  51. {invoice2data-0.4.5 → invoice2data-0.4.7}/src/invoice2data/extract/templates/com/com.google.adwords.hk.yml +4 -4
  52. invoice2data-0.4.7/src/invoice2data/extract/templates/com/com.hetzner.yml +90 -0
  53. {invoice2data-0.4.5 → invoice2data-0.4.7}/src/invoice2data/extract/templates/com/com.hobohost.yml +2 -2
  54. {invoice2data-0.4.5 → invoice2data-0.4.7}/src/invoice2data/extract/templates/com/com.jamiepro.yml +4 -4
  55. {invoice2data-0.4.5 → invoice2data-0.4.7}/src/invoice2data/extract/templates/com/com.linode.yml +2 -2
  56. {invoice2data-0.4.5 → invoice2data-0.4.7}/src/invoice2data/extract/templates/com/com.microsoftonline.hk-v2017.yml +3 -3
  57. {invoice2data-0.4.5 → invoice2data-0.4.7}/src/invoice2data/extract/templates/com/com.microsoftonline.hk.yml +3 -3
  58. {invoice2data-0.4.5 → invoice2data-0.4.7}/src/invoice2data/extract/templates/com/com.mongodb.yml +2 -2
  59. {invoice2data-0.4.5 → invoice2data-0.4.7}/src/invoice2data/extract/templates/com/com.namesilo.yml +2 -2
  60. {invoice2data-0.4.5 → invoice2data-0.4.7}/src/invoice2data/extract/templates/com/com.newrelic.yml +7 -7
  61. {invoice2data-0.4.5 → invoice2data-0.4.7}/src/invoice2data/extract/templates/com/com.nl.lenovo.digitalriver.yml +12 -12
  62. {invoice2data-0.4.5 → invoice2data-0.4.7}/src/invoice2data/extract/templates/com/com.nmmn.yml +4 -4
  63. {invoice2data-0.4.5 → invoice2data-0.4.7}/src/invoice2data/extract/templates/com/com.nodisto.yml +2 -2
  64. {invoice2data-0.4.5 → invoice2data-0.4.7}/src/invoice2data/extract/templates/com/com.nyse.yml +2 -2
  65. {invoice2data-0.4.5 → invoice2data-0.4.7}/src/invoice2data/extract/templates/com/com.oyo.invoice.yml +1 -1
  66. {invoice2data-0.4.5 → invoice2data-0.4.7}/src/invoice2data/extract/templates/com/com.packtpub.yml +2 -2
  67. {invoice2data-0.4.5 → invoice2data-0.4.7}/src/invoice2data/extract/templates/com/com.pixartprinting.yml +2 -2
  68. invoice2data-0.4.7/src/invoice2data/extract/templates/com/com.runbox.yml +65 -0
  69. {invoice2data-0.4.5 → invoice2data-0.4.7}/src/invoice2data/extract/templates/com/com.sammymaystone.yml +6 -6
  70. {invoice2data-0.4.5 → invoice2data-0.4.7}/src/invoice2data/extract/templates/com/com.scaleway.yml +3 -3
  71. {invoice2data-0.4.5 → invoice2data-0.4.7}/src/invoice2data/extract/templates/com/com.textmaster.yml +2 -2
  72. {invoice2data-0.4.5 → invoice2data-0.4.7}/src/invoice2data/extract/templates/com/com.tmx.yml +2 -2
  73. {invoice2data-0.4.5 → invoice2data-0.4.7}/src/invoice2data/extract/templates/com/com.travis-ci.yml +1 -1
  74. {invoice2data-0.4.5 → invoice2data-0.4.7}/src/invoice2data/extract/templates/com/com.twitter.de.yml +3 -3
  75. {invoice2data-0.4.5 → invoice2data-0.4.7}/src/invoice2data/extract/templates/com/com.twitter.uk.yml +2 -2
  76. {invoice2data-0.4.5 → invoice2data-0.4.7}/src/invoice2data/extract/templates/com/com.twitter.yml +3 -3
  77. {invoice2data-0.4.5 → invoice2data-0.4.7}/src/invoice2data/extract/templates/com/com.upwork.yml +1 -1
  78. {invoice2data-0.4.5 → invoice2data-0.4.7}/src/invoice2data/extract/templates/com/com.usersnap.yml +2 -2
  79. invoice2data-0.4.7/src/invoice2data/extract/templates/com/com.vultr.yml +81 -0
  80. {invoice2data-0.4.5 → invoice2data-0.4.7}/src/invoice2data/extract/templates/de/de.amazon.yml +2 -2
  81. {invoice2data-0.4.5 → invoice2data-0.4.7}/src/invoice2data/extract/templates/de/de.bettina-kast.yml +4 -4
  82. {invoice2data-0.4.5 → invoice2data-0.4.7}/src/invoice2data/extract/templates/de/de.digikey.com.yml +18 -18
  83. {invoice2data-0.4.5 → invoice2data-0.4.7}/src/invoice2data/extract/templates/de/de.hosteurope.yml +4 -4
  84. {invoice2data-0.4.5 → invoice2data-0.4.7}/src/invoice2data/extract/templates/de/de.notebooksbilligerBillPay.yml +5 -5
  85. {invoice2data-0.4.5 → invoice2data-0.4.7}/src/invoice2data/extract/templates/de/de.ovh.yml +2 -2
  86. {invoice2data-0.4.5 → invoice2data-0.4.7}/src/invoice2data/extract/templates/de/de.qualityhosting.yml +5 -4
  87. {invoice2data-0.4.5 → invoice2data-0.4.7}/src/invoice2data/extract/templates/de/de.united-domains.yml +4 -4
  88. invoice2data-0.4.7/src/invoice2data/extract/templates/es/com.mob-barcelona.caterina.yml +19 -0
  89. {invoice2data-0.4.5 → invoice2data-0.4.7}/src/invoice2data/extract/templates/es/com.pepephone.yml +6 -3
  90. invoice2data-0.4.7/src/invoice2data/extract/templates/es/es.amazon.yml +18 -0
  91. invoice2data-0.4.7/src/invoice2data/extract/templates/es/es.digimobile.yml +19 -0
  92. {invoice2data-0.4.5 → invoice2data-0.4.7}/src/invoice2data/extract/templates/es/es.supplies24.yml +2 -2
  93. {invoice2data-0.4.5 → invoice2data-0.4.7}/src/invoice2data/extract/templates/fr/co.mooncard.yml +2 -2
  94. {invoice2data-0.4.5 → invoice2data-0.4.7}/src/invoice2data/extract/templates/fr/com.adobe.ie.yml +2 -2
  95. {invoice2data-0.4.5 → invoice2data-0.4.7}/src/invoice2data/extract/templates/fr/com.akretion.fr.yml +2 -2
  96. {invoice2data-0.4.5 → invoice2data-0.4.7}/src/invoice2data/extract/templates/fr/com.amazon.aws.yml +2 -2
  97. {invoice2data-0.4.5 → invoice2data-0.4.7}/src/invoice2data/extract/templates/fr/com.ateliercopieservice.yml +2 -2
  98. {invoice2data-0.4.5 → invoice2data-0.4.7}/src/invoice2data/extract/templates/fr/com.chauffeur-prive.yml +6 -6
  99. {invoice2data-0.4.5 → invoice2data-0.4.7}/src/invoice2data/extract/templates/fr/com.coriolis.yml +2 -2
  100. {invoice2data-0.4.5 → invoice2data-0.4.7}/src/invoice2data/extract/templates/fr/com.easyjet.fr.yml +2 -2
  101. {invoice2data-0.4.5 → invoice2data-0.4.7}/src/invoice2data/extract/templates/fr/com.eaudugrandlyon.yml +2 -2
  102. {invoice2data-0.4.5 → invoice2data-0.4.7}/src/invoice2data/extract/templates/fr/com.godaddy.yml +2 -2
  103. {invoice2data-0.4.5 → invoice2data-0.4.7}/src/invoice2data/extract/templates/fr/com.google.ie.yml +2 -2
  104. {invoice2data-0.4.5 → invoice2data-0.4.7}/src/invoice2data/extract/templates/fr/com.hootsuite.yml +2 -2
  105. {invoice2data-0.4.5 → invoice2data-0.4.7}/src/invoice2data/extract/templates/fr/com.jeanbesson.yml +2 -2
  106. {invoice2data-0.4.5 → invoice2data-0.4.7}/src/invoice2data/extract/templates/fr/com.ldlc.yml +2 -2
  107. {invoice2data-0.4.5 → invoice2data-0.4.7}/src/invoice2data/extract/templates/fr/com.linkedin.yml +2 -2
  108. {invoice2data-0.4.5 → invoice2data-0.4.7}/src/invoice2data/extract/templates/fr/com.mention.yml +2 -2
  109. {invoice2data-0.4.5 → invoice2data-0.4.7}/src/invoice2data/extract/templates/fr/com.microsoft.ie.yml +2 -2
  110. {invoice2data-0.4.5 → invoice2data-0.4.7}/src/invoice2data/extract/templates/fr/com.myflyingbox.yml +2 -2
  111. {invoice2data-0.4.5 → invoice2data-0.4.7}/src/invoice2data/extract/templates/fr/com.officetimeline.yml +1 -1
  112. {invoice2data-0.4.5 → invoice2data-0.4.7}/src/invoice2data/extract/templates/fr/com.orange-business.mobile.yml +3 -3
  113. invoice2data-0.4.7/src/invoice2data/extract/templates/fr/com.ovh.fr.yml +17 -0
  114. {invoice2data-0.4.5 → invoice2data-0.4.7}/src/invoice2data/extract/templates/fr/com.rs-online.fr.yml +2 -2
  115. {invoice2data-0.4.5 → invoice2data-0.4.7}/src/invoice2data/extract/templates/fr/com.saur.yml +2 -2
  116. {invoice2data-0.4.5 → invoice2data-0.4.7}/src/invoice2data/extract/templates/fr/com.soyoustart.yml +2 -2
  117. {invoice2data-0.4.5 → invoice2data-0.4.7}/src/invoice2data/extract/templates/fr/com.vinci-autoroutes.yml +2 -2
  118. {invoice2data-0.4.5 → invoice2data-0.4.7}/src/invoice2data/extract/templates/fr/dolibarr.generique.yml +7 -7
  119. {invoice2data-0.4.5 → invoice2data-0.4.7}/src/invoice2data/extract/templates/fr/eu.trainline.yml +2 -2
  120. {invoice2data-0.4.5 → invoice2data-0.4.7}/src/invoice2data/extract/templates/fr/fr.actn.yml +4 -4
  121. {invoice2data-0.4.5 → invoice2data-0.4.7}/src/invoice2data/extract/templates/fr/fr.airfrance.yml +2 -2
  122. {invoice2data-0.4.5 → invoice2data-0.4.7}/src/invoice2data/extract/templates/fr/fr.also.yml +5 -5
  123. {invoice2data-0.4.5 → invoice2data-0.4.7}/src/invoice2data/extract/templates/fr/fr.amazon.yml +4 -6
  124. {invoice2data-0.4.5 → invoice2data-0.4.7}/src/invoice2data/extract/templates/fr/fr.assurance-epargne-pension.yml +2 -2
  125. {invoice2data-0.4.5 → invoice2data-0.4.7}/src/invoice2data/extract/templates/fr/fr.bouyguestelecom.adsl-fiber.yml +2 -2
  126. {invoice2data-0.4.5 → invoice2data-0.4.7}/src/invoice2data/extract/templates/fr/fr.bouyguestelecom.mobile.yml +2 -2
  127. {invoice2data-0.4.5 → invoice2data-0.4.7}/src/invoice2data/extract/templates/fr/fr.butagaz.yml +4 -4
  128. {invoice2data-0.4.5 → invoice2data-0.4.7}/src/invoice2data/extract/templates/fr/fr.chronopost.yml +2 -2
  129. {invoice2data-0.4.5 → invoice2data-0.4.7}/src/invoice2data/extract/templates/fr/fr.dirafi.yml +2 -2
  130. {invoice2data-0.4.5 → invoice2data-0.4.7}/src/invoice2data/extract/templates/fr/fr.domaine-achat.yml +2 -2
  131. {invoice2data-0.4.5 → invoice2data-0.4.7}/src/invoice2data/extract/templates/fr/fr.easytrip.yml +3 -3
  132. {invoice2data-0.4.5 → invoice2data-0.4.7}/src/invoice2data/extract/templates/fr/fr.edf.entreprises.yml +2 -2
  133. {invoice2data-0.4.5 → invoice2data-0.4.7}/src/invoice2data/extract/templates/fr/fr.edf.pme.yml +3 -3
  134. {invoice2data-0.4.5 → invoice2data-0.4.7}/src/invoice2data/extract/templates/fr/fr.finagaz.yml +2 -2
  135. {invoice2data-0.4.5 → invoice2data-0.4.7}/src/invoice2data/extract/templates/fr/fr.fountain.yml +2 -2
  136. {invoice2data-0.4.5 → invoice2data-0.4.7}/src/invoice2data/extract/templates/fr/fr.free.adsl-fiber.yml +6 -3
  137. {invoice2data-0.4.5 → invoice2data-0.4.7}/src/invoice2data/extract/templates/fr/fr.free.mobile.yml +3 -3
  138. {invoice2data-0.4.5 → invoice2data-0.4.7}/src/invoice2data/extract/templates/fr/fr.free.mobile2.yml +3 -3
  139. {invoice2data-0.4.5 → invoice2data-0.4.7}/src/invoice2data/extract/templates/fr/fr.futur.yml +2 -2
  140. {invoice2data-0.4.5 → invoice2data-0.4.7}/src/invoice2data/extract/templates/fr/fr.ge-iroise.yml +2 -2
  141. invoice2data-0.4.7/src/invoice2data/extract/templates/fr/fr.google.yml +19 -0
  142. {invoice2data-0.4.5 → invoice2data-0.4.7}/src/invoice2data/extract/templates/fr/fr.greffe-tc-lyon.yml +2 -2
  143. {invoice2data-0.4.5 → invoice2data-0.4.7}/src/invoice2data/extract/templates/fr/fr.hiscox.yml +2 -2
  144. {invoice2data-0.4.5 → invoice2data-0.4.7}/src/invoice2data/extract/templates/fr/fr.internetsatellite.yml +2 -2
  145. {invoice2data-0.4.5 → invoice2data-0.4.7}/src/invoice2data/extract/templates/fr/fr.jpg.yml +2 -2
  146. {invoice2data-0.4.5 → invoice2data-0.4.7}/src/invoice2data/extract/templates/fr/fr.kubii.yml +3 -3
  147. {invoice2data-0.4.5 → invoice2data-0.4.7}/src/invoice2data/extract/templates/fr/fr.laposte.boutique.yml +2 -2
  148. {invoice2data-0.4.5 → invoice2data-0.4.7}/src/invoice2data/extract/templates/fr/fr.laposte.coliposte.yml +2 -2
  149. {invoice2data-0.4.5 → invoice2data-0.4.7}/src/invoice2data/extract/templates/fr/fr.lecab.yml +2 -2
  150. {invoice2data-0.4.5 → invoice2data-0.4.7}/src/invoice2data/extract/templates/fr/fr.leroymerlin.yml +2 -2
  151. {invoice2data-0.4.5 → invoice2data-0.4.7}/src/invoice2data/extract/templates/fr/fr.maaf.yml +2 -2
  152. {invoice2data-0.4.5 → invoice2data-0.4.7}/src/invoice2data/extract/templates/fr/fr.mediapart.yml +2 -2
  153. {invoice2data-0.4.5 → invoice2data-0.4.7}/src/invoice2data/extract/templates/fr/fr.moneo-resto.yml +2 -2
  154. {invoice2data-0.4.5 → invoice2data-0.4.7}/src/invoice2data/extract/templates/fr/fr.mouser.yml +2 -2
  155. {invoice2data-0.4.5 → invoice2data-0.4.7}/src/invoice2data/extract/templates/fr/fr.mycelium-roulement.yml +2 -3
  156. {invoice2data-0.4.5 → invoice2data-0.4.7}/src/invoice2data/extract/templates/fr/fr.napsis.yml +2 -2
  157. {invoice2data-0.4.5 → invoice2data-0.4.7}/src/invoice2data/extract/templates/fr/fr.nexity.yml +4 -4
  158. {invoice2data-0.4.5 → invoice2data-0.4.7}/src/invoice2data/extract/templates/fr/fr.orange.fibre.yml +3 -3
  159. {invoice2data-0.4.5 → invoice2data-0.4.7}/src/invoice2data/extract/templates/fr/fr.orange.fixedline.yml +4 -4
  160. {invoice2data-0.4.5 → invoice2data-0.4.7}/src/invoice2data/extract/templates/fr/fr.prestaclic.yml +3 -3
  161. {invoice2data-0.4.5 → invoice2data-0.4.7}/src/invoice2data/extract/templates/fr/fr.publicationannoncelegale.yml +6 -6
  162. {invoice2data-0.4.5 → invoice2data-0.4.7}/src/invoice2data/extract/templates/fr/fr.sfr.adsl-fiber.yml +2 -2
  163. {invoice2data-0.4.5 → invoice2data-0.4.7}/src/invoice2data/extract/templates/fr/fr.sfr.mobile.yml +2 -2
  164. {invoice2data-0.4.5 → invoice2data-0.4.7}/src/invoice2data/extract/templates/fr/fr.sosh.yml +2 -2
  165. {invoice2data-0.4.5 → invoice2data-0.4.7}/src/invoice2data/extract/templates/fr/fr.teledec.yml +2 -2
  166. {invoice2data-0.4.5 → invoice2data-0.4.7}/src/invoice2data/extract/templates/fr/fr.topoffice.yml +2 -2
  167. {invoice2data-0.4.5 → invoice2data-0.4.7}/src/invoice2data/extract/templates/fr/net.online.yml +2 -2
  168. {invoice2data-0.4.5 → invoice2data-0.4.7}/src/invoice2data/extract/templates/fr/net.scaleway.yml +2 -2
  169. invoice2data-0.4.7/src/invoice2data/extract/templates/nl/nl.accor.rhine.opco hotels.json +171 -0
  170. {invoice2data-0.4.5 → invoice2data-0.4.7}/src/invoice2data/extract/templates/nl/nl.action.yml +16 -16
  171. invoice2data-0.4.7/src/invoice2data/extract/templates/nl/nl.agrisneltank.json +66 -0
  172. {invoice2data-0.4.5 → invoice2data-0.4.7}/src/invoice2data/extract/templates/nl/nl.albron.yml +16 -16
  173. {invoice2data-0.4.5 → invoice2data-0.4.7}/src/invoice2data/extract/templates/nl/nl.anwb.yml +8 -8
  174. invoice2data-0.4.7/src/invoice2data/extract/templates/nl/nl.argos.json +65 -0
  175. {invoice2data-0.4.5 → invoice2data-0.4.7}/src/invoice2data/extract/templates/nl/nl.be.coolblue.yml +7 -7
  176. {invoice2data-0.4.5 → invoice2data-0.4.7}/src/invoice2data/extract/templates/nl/nl.begra.yml +10 -10
  177. {invoice2data-0.4.5 → invoice2data-0.4.7}/src/invoice2data/extract/templates/nl/nl.blokker.yml +13 -14
  178. {invoice2data-0.4.5 → invoice2data-0.4.7}/src/invoice2data/extract/templates/nl/nl.bouwmans.yml +14 -14
  179. {invoice2data-0.4.5 → invoice2data-0.4.7}/src/invoice2data/extract/templates/nl/nl.bp.yml +1 -1
  180. invoice2data-0.4.7/src/invoice2data/extract/templates/nl/nl.buijtendijk.yml +104 -0
  181. invoice2data-0.4.7/src/invoice2data/extract/templates/nl/nl.bunq.yml +26 -0
  182. {invoice2data-0.4.5 → invoice2data-0.4.7}/src/invoice2data/extract/templates/nl/nl.cpe.yml +2 -2
  183. {invoice2data-0.4.5 → invoice2data-0.4.7}/src/invoice2data/extract/templates/nl/nl.esso_eg_services.yml +1 -1
  184. {invoice2data-0.4.5 → invoice2data-0.4.7}/src/invoice2data/extract/templates/nl/nl.esso_eg_services_v2.yml +20 -21
  185. invoice2data-0.4.7/src/invoice2data/extract/templates/nl/nl.fedex.json +51 -0
  186. {invoice2data-0.4.5 → invoice2data-0.4.7}/src/invoice2data/extract/templates/nl/nl.ferbox.yml +9 -10
  187. invoice2data-0.4.7/src/invoice2data/extract/templates/nl/nl.fletcher.yml +103 -0
  188. {invoice2data-0.4.5 → invoice2data-0.4.7}/src/invoice2data/extract/templates/nl/nl.gamma.yml +16 -16
  189. {invoice2data-0.4.5 → invoice2data-0.4.7}/src/invoice2data/extract/templates/nl/nl.goos.yml +8 -9
  190. {invoice2data-0.4.5 → invoice2data-0.4.7}/src/invoice2data/extract/templates/nl/nl.gulf.yml +22 -18
  191. {invoice2data-0.4.5 → invoice2data-0.4.7}/src/invoice2data/extract/templates/nl/nl.ipparking.paleiskwartier.yml +9 -10
  192. {invoice2data-0.4.5 → invoice2data-0.4.7}/src/invoice2data/extract/templates/nl/nl.karwei.yml +15 -15
  193. {invoice2data-0.4.5 → invoice2data-0.4.7}/src/invoice2data/extract/templates/nl/nl.kav.yml +10 -11
  194. {invoice2data-0.4.5 → invoice2data-0.4.7}/src/invoice2data/extract/templates/nl/nl.koffiehenk.yml +9 -9
  195. invoice2data-0.4.7/src/invoice2data/extract/templates/nl/nl.kuwait-q8.json +84 -0
  196. invoice2data-0.4.7/src/invoice2data/extract/templates/nl/nl.makro.json +143 -0
  197. invoice2data-0.4.7/src/invoice2data/extract/templates/nl/nl.marktplaats.json +106 -0
  198. invoice2data-0.4.7/src/invoice2data/extract/templates/nl/nl.megekko.json +143 -0
  199. {invoice2data-0.4.5 → invoice2data-0.4.7}/src/invoice2data/extract/templates/nl/nl.ns.invoice.yml +11 -12
  200. invoice2data-0.4.7/src/invoice2data/extract/templates/nl/nl.odido.json +116 -0
  201. {invoice2data-0.4.5 → invoice2data-0.4.7}/src/invoice2data/extract/templates/nl/nl.ok.yml +26 -23
  202. {invoice2data-0.4.5 → invoice2data-0.4.7}/src/invoice2data/extract/templates/nl/nl.parkmobile.yml +1 -2
  203. {invoice2data-0.4.5 → invoice2data-0.4.7}/src/invoice2data/extract/templates/nl/nl.praxis.yml +14 -14
  204. {invoice2data-0.4.5 → invoice2data-0.4.7}/src/invoice2data/extract/templates/nl/nl.reclameland.yml +19 -20
  205. {invoice2data-0.4.5 → invoice2data-0.4.7}/src/invoice2data/extract/templates/nl/nl.saeco.philips.eluscious.yml +15 -15
  206. {invoice2data-0.4.5 → invoice2data-0.4.7}/src/invoice2data/extract/templates/nl/nl.shell_nederland.yml +2 -2
  207. {invoice2data-0.4.5 → invoice2data-0.4.7}/src/invoice2data/extract/templates/nl/nl.shell_schellenkens.yml +2 -3
  208. {invoice2data-0.4.5 → invoice2data-0.4.7}/src/invoice2data/extract/templates/nl/nl.simpel.yml +1 -1
  209. invoice2data-0.4.7/src/invoice2data/extract/templates/nl/nl.tango.json +67 -0
  210. {invoice2data-0.4.5 → invoice2data-0.4.7}/src/invoice2data/extract/templates/nl/nl.total_express.yml +25 -26
  211. {invoice2data-0.4.5 → invoice2data-0.4.7}/src/invoice2data/extract/templates/nl/nl.total_ototol.yml +25 -25
  212. invoice2data-0.4.7/src/invoice2data/extract/templates/nl/nl.total_servauto_ned.json +84 -0
  213. {invoice2data-0.4.5 → invoice2data-0.4.7}/src/invoice2data/extract/templates/nl/nl.transip.yml +8 -8
  214. {invoice2data-0.4.5 → invoice2data-0.4.7}/src/invoice2data/extract/templates/nl/nl.tuynder.yml +11 -12
  215. invoice2data-0.4.7/src/invoice2data/extract/templates/nl/nl.valk.exclusief.hotel.json +198 -0
  216. invoice2data-0.4.7/src/invoice2data/extract/templates/nl/nl.valk.exclusief.restaurant.json +166 -0
  217. {invoice2data-0.4.5 → invoice2data-0.4.7}/src/invoice2data/extract/templates/nl/nl.vistaprint.yml +2 -2
  218. {invoice2data-0.4.5 → invoice2data-0.4.7}/src/invoice2data/extract/templates/nl/nl.vodafone.yml +1 -1
  219. {invoice2data-0.4.5 → invoice2data-0.4.7}/src/invoice2data/extract/templates/nl/nl.wasco.yml +2 -2
  220. {invoice2data-0.4.5 → invoice2data-0.4.7}/src/invoice2data/extract/templates/nl/nl.weid.yml +10 -11
  221. {invoice2data-0.4.5 → invoice2data-0.4.7}/src/invoice2data/extract/templates/nl/nl.yezzer.yml +7 -8
  222. {invoice2data-0.4.5 → invoice2data-0.4.7}/src/invoice2data/extract/templates/nl/nl.zinkunie.yml +2 -2
  223. {invoice2data-0.4.5 → invoice2data-0.4.7}/src/invoice2data/extract/templates/pl/pl.bmw-fs.yml +3 -3
  224. {invoice2data-0.4.5 → invoice2data-0.4.7}/src/invoice2data/extract/templates/pl/pl.insert.subiekt-gt.yml +10 -10
  225. {invoice2data-0.4.5 → invoice2data-0.4.7}/src/invoice2data/extract/templates/pl/pl.insert.subiekt-nexo.yml +3 -3
  226. invoice2data-0.4.7/src/invoice2data/extract/templates/pl/pl.ksef.yml +29 -0
  227. {invoice2data-0.4.5 → invoice2data-0.4.7}/src/invoice2data/extract/templates/pl/pl.orlen.yml +3 -3
  228. {invoice2data-0.4.5 → invoice2data-0.4.7}/src/invoice2data/extract/templates/pl/pl.p4.yml +3 -3
  229. {invoice2data-0.4.5 → invoice2data-0.4.7}/src/invoice2data/extract/templates/pl/pl.paypro.yml +4 -4
  230. invoice2data-0.4.7/src/invoice2data/extract/utils.py +33 -0
  231. invoice2data-0.4.7/src/invoice2data/input/__init__.py +1 -0
  232. invoice2data-0.4.7/src/invoice2data/input/gvision.py +110 -0
  233. invoice2data-0.4.7/src/invoice2data/input/ocrmypdf.py +126 -0
  234. invoice2data-0.4.7/src/invoice2data/input/pdfminer_wrapper.py +49 -0
  235. invoice2data-0.4.7/src/invoice2data/input/pdfplumber.py +66 -0
  236. invoice2data-0.4.7/src/invoice2data/input/pdftotext.py +76 -0
  237. {invoice2data-0.4.5 → invoice2data-0.4.7}/src/invoice2data/input/tesseract.py +68 -53
  238. invoice2data-0.4.7/src/invoice2data/input/text.py +16 -0
  239. invoice2data-0.4.7/src/invoice2data/output/__init__.py +1 -0
  240. invoice2data-0.4.7/src/invoice2data/output/to_csv.py +55 -0
  241. invoice2data-0.4.7/src/invoice2data/output/to_json.py +61 -0
  242. invoice2data-0.4.7/src/invoice2data/output/to_xml.py +101 -0
  243. {invoice2data-0.4.5 → invoice2data-0.4.7/src/invoice2data.egg-info}/PKG-INFO +96 -123
  244. {invoice2data-0.4.5 → invoice2data-0.4.7}/src/invoice2data.egg-info/SOURCES.txt +34 -6
  245. invoice2data-0.4.7/src/invoice2data.egg-info/entry_points.txt +2 -0
  246. invoice2data-0.4.7/src/invoice2data.egg-info/requires.txt +31 -0
  247. invoice2data-0.4.7/tests/test_cli.py +444 -0
  248. invoice2data-0.4.7/tests/test_extraction.py +72 -0
  249. invoice2data-0.4.7/tests/test_gvision.py +89 -0
  250. {invoice2data-0.4.5 → invoice2data-0.4.7}/tests/test_invoice_template.py +55 -52
  251. {invoice2data-0.4.5 → invoice2data-0.4.7}/tests/test_lib.py +61 -43
  252. {invoice2data-0.4.5 → invoice2data-0.4.7}/tests/test_loader.py +24 -16
  253. invoice2data-0.4.7/tests/test_main.py +18 -0
  254. invoice2data-0.4.5/MANIFEST.in +0 -4
  255. invoice2data-0.4.5/setup.cfg +0 -76
  256. invoice2data-0.4.5/setup.py +0 -17
  257. invoice2data-0.4.5/src/invoice2data/__init__.py +0 -1
  258. invoice2data-0.4.5/src/invoice2data/extract/invoice_template.py +0 -285
  259. invoice2data-0.4.5/src/invoice2data/extract/loader.py +0 -139
  260. invoice2data-0.4.5/src/invoice2data/extract/parsers/regex.py +0 -85
  261. invoice2data-0.4.5/src/invoice2data/extract/parsers/static.py +0 -19
  262. invoice2data-0.4.5/src/invoice2data/extract/plugins/__init__.py +0 -0
  263. invoice2data-0.4.5/src/invoice2data/extract/plugins/lines.py +0 -15
  264. invoice2data-0.4.5/src/invoice2data/extract/plugins/tables.py +0 -99
  265. invoice2data-0.4.5/src/invoice2data/extract/templates/fr/com.ovh.fr.yml +0 -18
  266. invoice2data-0.4.5/src/invoice2data/extract/templates/nl/nl.bunq.yml +0 -26
  267. invoice2data-0.4.5/src/invoice2data/input/__init__.py +0 -0
  268. invoice2data-0.4.5/src/invoice2data/input/gvision.py +0 -87
  269. invoice2data-0.4.5/src/invoice2data/input/ocrmypdf.py +0 -146
  270. invoice2data-0.4.5/src/invoice2data/input/pdfminer_wrapper.py +0 -56
  271. invoice2data-0.4.5/src/invoice2data/input/pdfplumber.py +0 -48
  272. invoice2data-0.4.5/src/invoice2data/input/pdftotext.py +0 -57
  273. invoice2data-0.4.5/src/invoice2data/input/text.py +0 -5
  274. invoice2data-0.4.5/src/invoice2data/main.py +0 -327
  275. invoice2data-0.4.5/src/invoice2data/output/__init__.py +0 -0
  276. invoice2data-0.4.5/src/invoice2data/output/to_csv.py +0 -60
  277. invoice2data-0.4.5/src/invoice2data/output/to_json.py +0 -61
  278. invoice2data-0.4.5/src/invoice2data/output/to_xml.py +0 -69
  279. invoice2data-0.4.5/src/invoice2data.egg-info/entry_points.txt +0 -2
  280. invoice2data-0.4.5/src/invoice2data.egg-info/requires.txt +0 -11
  281. invoice2data-0.4.5/tests/test_cli.py +0 -334
  282. invoice2data-0.4.5/tests/test_extraction.py +0 -63
  283. /invoice2data-0.4.5/LICENSE.txt → /invoice2data-0.4.7/LICENSE.md +0 -0
  284. {invoice2data-0.4.5 → invoice2data-0.4.7}/src/invoice2data/extract/templates/au/au.com.telstra.yml +0 -0
  285. {invoice2data-0.4.5 → invoice2data-0.4.7}/src/invoice2data/extract/templates/com/com.namecheap.yml +0 -0
  286. {invoice2data-0.4.5 → invoice2data-0.4.7}/src/invoice2data/extract/templates/nl/nl.farnell.yml +0 -0
  287. {invoice2data-0.4.5 → invoice2data-0.4.7}/src/invoice2data/extract/templates/nl/nl.momentsenmore.yml +0 -0
  288. /invoice2data-0.4.5/src/invoice2data/extract/__init__.py → /invoice2data-0.4.7/src/invoice2data/py.typed +0 -0
  289. {invoice2data-0.4.5 → invoice2data-0.4.7}/src/invoice2data.egg-info/dependency_links.txt +0 -0
  290. {invoice2data-0.4.5 → invoice2data-0.4.7}/src/invoice2data.egg-info/top_level.txt +0 -0
@@ -1,47 +1,85 @@
1
- Metadata-Version: 2.1
1
+ Metadata-Version: 2.4
2
2
  Name: invoice2data
3
- Version: 0.4.5
3
+ Version: 0.4.7
4
4
  Summary: Python parser to extract data from pdf invoice
5
- Home-page: https://github.com/invoice-x/invoice2data
6
5
  Author: Manuel Riel
7
- License: MIT License
8
- Keywords: pdf,invoicing
9
- Classifier: Development Status :: 5 - Production/Stable
10
- Classifier: Environment :: MacOS X
11
- Classifier: Environment :: Console
12
- Classifier: Environment :: Win32 (MS Windows)
13
- Classifier: Operating System :: MacOS
14
- Classifier: Operating System :: POSIX
15
- Classifier: Operating System :: Unix
16
- Classifier: Operating System :: Microsoft :: Windows
6
+ License: MIT
7
+ Project-URL: homepage, https://github.com/invoice-x/invoice2data
8
+ Project-URL: repository, https://github.com/invoice-x/invoice2data
9
+ Project-URL: documentation, https://invoice2data.readthedocs.io
10
+ Project-URL: Changelog, https://github.com/invoice-x/invoice2data/releases
11
+ Keywords: python,data-mining,accounting,invoice,pdf,parcing
12
+ Classifier: Programming Language :: Python :: 3
17
13
  Classifier: License :: OSI Approved :: MIT License
18
- Classifier: Programming Language :: Python :: 3.7
19
- Classifier: Programming Language :: Python :: 3.8
14
+ Classifier: Operating System :: OS Independent
20
15
  Classifier: Programming Language :: Python :: 3.9
21
16
  Classifier: Programming Language :: Python :: 3.10
22
17
  Classifier: Programming Language :: Python :: 3.11
18
+ Classifier: Programming Language :: Python :: 3.12
19
+ Classifier: Programming Language :: Python :: 3.13
23
20
  Classifier: Topic :: Office/Business :: Financial
24
21
  Classifier: Topic :: Office/Business :: Financial :: Accounting
22
+ Classifier: Environment :: Console
23
+ Classifier: Intended Audience :: Financial and Insurance Industry
24
+ Classifier: Intended Audience :: Developers
25
+ Classifier: Topic :: Office/Business :: Financial :: Accounting
26
+ Classifier: Topic :: Office/Business :: Financial
27
+ Classifier: Topic :: Software Development :: Libraries :: Python Modules
28
+ Classifier: Development Status :: 5 - Production/Stable
29
+ Requires-Python: >=3.9
25
30
  Description-Content-Type: text/markdown
26
- Requires-Dist: pillow
27
- Requires-Dist: pyyaml
28
- Requires-Dist: dateparser
29
- Provides-Extra: test
30
- Requires-Dist: pytest; extra == "test"
31
- Requires-Dist: pytest-cov; extra == "test"
32
- Requires-Dist: flake8; extra == "test"
33
- Requires-Dist: pdfminer.six; extra == "test"
34
- Requires-Dist: pdfplumber; extra == "test"
35
- Requires-Dist: tox; extra == "test"
31
+ License-File: LICENSE.md
32
+ Requires-Dist: click>=8.0.1
33
+ Requires-Dist: dateparser>=1.2.0
34
+ Requires-Dist: PyYAML>=6.0
35
+ Requires-Dist: regex>=2025.2.10; python_version >= "3.12"
36
+ Requires-Dist: regex>=2024.4.16; python_version < "3.12"
37
+ Provides-Extra: defusedxml
38
+ Requires-Dist: defusedxml==0.7.1; extra == "defusedxml"
39
+ Provides-Extra: googlevision
40
+ Requires-Dist: google-cloud-storage==2.18.2; extra == "googlevision"
41
+ Requires-Dist: google-cloud-vision==3.8.1; extra == "googlevision"
42
+ Provides-Extra: ocr
43
+ Requires-Dist: ghostscript==0.7; extra == "ocr"
44
+ Provides-Extra: ocrmypdf
45
+ Requires-Dist: ocrmypdf>=14.4.0; extra == "ocrmypdf"
46
+ Provides-Extra: pdfminer-six
47
+ Requires-Dist: pdfminer-six==20231228; extra == "pdfminer-six"
48
+ Provides-Extra: pdfplumber
49
+ Requires-Dist: pdfplumber==0.11.4; extra == "pdfplumber"
50
+ Provides-Extra: pyyaml
51
+ Requires-Dist: pyyaml==6.0.2; extra == "pyyaml"
52
+ Dynamic: license-file
36
53
 
37
54
  # Data extractor for PDF invoices - invoice2data
38
55
 
56
+ [![Read the documentation at https://invoice2data.readthedocs.io/](https://img.shields.io/readthedocs/invoice2data/latest.svg?label=Read%20the%20Docs)][read the docs]
39
57
  [![invoice2data build status on GitHub Actions](https://github.com/invoice-x/invoice2data/workflows/Test/badge.svg)](https://github.com/invoice-x/invoice2data/actions)
40
58
  [![Version](https://img.shields.io/pypi/v/invoice2data.svg)](https://pypi.python.org/pypi/invoice2data)
41
59
  [![Support Python versions](https://img.shields.io/pypi/pyversions/invoice2data.svg)](https://pypi.python.org/pypi/invoice2data)
42
-
43
- A command line tool and Python library to support your accounting
44
- process.
60
+ [![License](https://img.shields.io/pypi/l/invoice2data)][license]
61
+ [![Tests](https://github.com/invoice-x/invoice2data/workflows/Tests/badge.svg)][tests]
62
+ [![Codecov](https://codecov.io/gh/invoice-x/invoice2data/branch/main/graph/badge.svg)][codecov]
63
+ [![pre-commit](https://img.shields.io/badge/pre--commit-enabled-brightgreen?logo=pre-commit&logoColor=white)][pre-commit]
64
+ [![Ruff](https://img.shields.io/endpoint?url=https://raw.githubusercontent.com/astral-sh/ruff/main/assets/badge/v2.json)](https://github.com/astral-sh/ruff)
65
+
66
+ [pypi status]: https://pypi.org/project/invoice2data/
67
+ [read the docs]: https://invoice2data.readthedocs.io/
68
+ [tests]: https://github.com/invoice-x/invoice2data/actions?workflow=Tests
69
+ [codecov]: https://app.codecov.io/gh/invoice-x/invoice2data
70
+ [pre-commit]: https://github.com/pre-commit/pre-commit
71
+ [ruff badge]: https://img.shields.io/endpoint?url=https://raw.githubusercontent.com/astral-sh/ruff/main/assets/badge/v2.json
72
+ [ruff project]: https://github.com/charliermarsh/ruff
73
+
74
+ A command line tool and Python library that automates the extraction of key information from invoices to support your accounting
75
+ process. The library is very flexible and can be used on other types of business documents as well.
76
+
77
+ In essence, invoice2data simplifies the process of getting data from invoices by:
78
+
79
+ Automating text extraction: No more manual copying and pasting.
80
+ Using templates for structure: Handles different invoice layouts.
81
+ Providing structured output: Makes the data ready for analysis or further processing.
82
+ This makes it a valuable tool for businesses and developers dealing with a large volume of invoices, saving time and reducing errors associated with manual data entry.
45
83
 
46
84
  1. extracts text from PDF files using different techniques, like
47
85
  `pdftotext`, `text`, `ocrmypdf`, `pdfminer`, `pdfplumber` or OCR -- `tesseract`, or
@@ -67,92 +105,11 @@ Go from PDF files to this:
67
105
  {'date': (2014, 8, 3), 'invoice_number': '42183017', 'amount': 4.11, 'desc': 'Invoice 42183017 from Amazon Web Services'}
68
106
  {'date': (2015, 1, 28), 'invoice_number': '12429647', 'amount': 101.0, 'desc': 'Invoice 12429647 from Envato'}
69
107
 
70
- ```mermaid
71
- flowchart LR
72
-
73
- InvoiceFile[fa:fa-file-invoice Invoicefile\n\npdf\nimage\ntext] --> Input-module(Input Module\n\npdftotext\ntext\npdfminer\npdfplumber\ntesseract\ngvision)
74
-
75
- Input-module --> |Extracted Text| C{keyword\nmatching}
76
-
77
- Invoice-Templates[(fa:fa-file-lines Invoice Templates)] --> C{keyword\nmatching}
78
-
79
- C --> |Extracted Text + fa:fa-file-circle-check Template| E(Template Processing\n apply options from template\nremove accents, replaces etc...)
80
-
81
- E --> |Optimized String|Plugins&Parsers(Call plugins + parsers)
82
-
83
- subgraph Plugins&Parsers
84
-
85
- direction BT
86
-
87
- tables[fa:fa-table tables] ~~~ lines[fa:fa-grip-lines lines]
88
-
89
- lines ~~~ regex[fa:fa-code regex]
90
-
91
- regex ~~~ static[fa:fa-check static]
92
-
93
-
94
-
95
- end
96
-
97
- Plugins&Parsers --> |output| result[result\nfa:fa-file-csv,\njson,\nXML]
98
-
99
-
100
-
101
- click Invoice-Templates https://github.com/invoice-x/invoice2data/blob/master/TUTORIAL.md
102
-
103
- click result https://github.com/invoice-x/invoice2data#usage
104
-
105
- click Input-module https://github.com/invoice-x/invoice2data#installation-of-input-modules
106
-
107
- click E https://github.com/invoice-x/invoice2data/blob/master/TUTORIAL.md#options
108
-
109
- click tables https://github.com/invoice-x/invoice2data/blob/master/TUTORIAL.md#tables
110
-
111
- click lines https://github.com/invoice-x/invoice2data/blob/master/TUTORIAL.md#lines
112
-
113
- click regex https://github.com/invoice-x/invoice2data/blob/master/TUTORIAL.md#regex
114
-
115
- click static https://github.com/invoice-x/invoice2data/blob/master/TUTORIAL.md#parser-static
116
-
117
- ```
118
-
119
- ## Installation
120
-
121
- 1. Install pdftotext
122
-
123
- If possible get the latest
124
- [xpdf/poppler-utils](https://poppler.freedesktop.org/) version. It's
125
- included with macOS Homebrew, Debian and Ubuntu. Without it, `pdftotext`
126
- won't parse tables in PDF correctly.
127
-
128
- 2. Install `invoice2data` using pip
129
-
130
- pip install invoice2data
131
-
132
- ### Installation of input modules
133
-
134
- An [tesseract](https://github.com/tesseract-ocr/tessdoc/blob/main/FAQ.md#how-do-i-get-tesseract) wrapper is included in auto language mode. It will test your input files against the languages installed on your system. To use it tesseract and imagemagick needs to be installed.
135
- tesseract supports multiple OCR engine modes. By default the available engine installed on the system will be used.
136
-
137
- Languages:
138
- tesseract-ocr recognize more than [100 languages](https://github.com/tesseract-ocr/tessdata)
139
- For Linux users, you can often find packages that provide language packs:
140
-
141
- ```
142
- # Display a list of all Tesseract language packs
143
- apt-cache search tesseract-ocr
144
-
145
- # Debian/Ubuntu users
146
- apt-get install tesseract-ocr-chi-sim # Example: Install Chinese Simplified language pack
147
-
148
- # Arch Linux users
149
- pacman -S tesseract-data-eng tesseract-data-deu # Example: Install the English and German language packs
150
-
151
- ```
152
108
 
153
109
  ## Usage
154
110
 
155
111
  Basic usage. Process PDF files and write result to CSV.
112
+ Please see the [Command-line Reference] for details.
156
113
 
157
114
  - `invoice2data invoice.pdf`
158
115
  - `invoice2data invoice.txt`
@@ -166,7 +123,7 @@ Choose any of the following input readers:
166
123
  - pdfminer.six `invoice2data --input-reader pdfminer invoice.pdf`
167
124
  - pdfplumber `invoice2data --input-reader pdfplumber invoice.pdf`
168
125
  - ocrmypdf `invoice2data --input-reader ocrmypdf invoice.pdf`
169
- - gvision `invoice2data --input-reader gvision invoice.pdf` (needs `GOOGLE_APPLICATION_CREDENTIALS` env var)
126
+ - gvision `invoice2data --input-reader gvision invoice.pdf` (needs `GOOGLE_APPLICATION_CREDENTIALS` env var and a Google Cloud Bucket name. The bucket name can be set as an argument to the function ``to_text`` or as an Environment variable named ``GOOGLE_CLOUD_BUCKET_NAME`` )
170
127
 
171
128
  Choose any of the following output formats:
172
129
 
@@ -216,13 +173,12 @@ Using in-house templates
216
173
  templates = read_templates('/path/to/your/templates/')
217
174
  result = extract_data(filename, templates=templates)
218
175
 
219
-
220
176
  ## Template system
221
177
 
222
178
  See `invoice2data/extract/templates` for existing templates. Just extend
223
179
  the list to add your own. If deployed by a bigger organisation, there
224
180
  should be an interface to edit templates for new suppliers. 80-20 rule.
225
- For a short tutorial on how to add new templates, see [TUTORIAL.md](TUTORIAL.md).
181
+ For a short tutorial on how to add new templates, see [tutorial.md](./docs/tutorial.md).
226
182
 
227
183
  Templates are based on Yaml or JSON. They define one or more keywords to find
228
184
  the right template, one or more exclude_keywords to further narrow it down
@@ -236,6 +192,7 @@ processing.
236
192
 
237
193
  Example:
238
194
 
195
+ ````yaml
239
196
  issuer: Amazon Web Services, Inc.
240
197
  keywords:
241
198
  - Amazon Web Services
@@ -259,8 +216,10 @@ Example:
259
216
  line: (.*)\$(\d+\.\d+)
260
217
  skip_line: Note
261
218
  last_line: VAT \*\*
219
+ ````
262
220
 
263
221
  The lines package has multiple settings:
222
+
264
223
  - start > The pattern where the lines begin. This is typically the header row of the table. This row is not included in the line matching.
265
224
  - end > The pattern denoting where the lines end. Typically some text at the very end or immediately below the table. Also not included in the line matching.
266
225
  - first_line > Optional. This is the primary line item for each entry.
@@ -273,20 +232,20 @@ As an alternative json templates can be used. Which are natively better supporte
273
232
 
274
233
  The performance with yaml templates can be greatly increased **10x** by using [libyaml](https://github.com/yaml/libyaml)
275
234
  It can be installed on most distributions by:
276
- `sudo apt-get libyaml-dev`
277
-
235
+ `sudo apt-get install libyaml-dev`
278
236
 
279
237
  ## Development
280
238
 
281
239
  If you are interested in improving this project, have a look at our
282
- [developer guide](DEVELOP.md) to get you started quickly.
240
+ [developer guide](./CONTRIBUTING.md) to get you started quickly.
283
241
 
284
242
  ## Roadmap and open tasks
285
243
 
286
244
  - integrate with online OCR?
287
245
  - try to 'guess' parameters for new invoice formats.
288
- - can apply machine learning to guess new parameters?
289
- - advanced table parsing with [camelot](https://github.com/camelot-dev/camelot)
246
+ - apply machine learning to guess new parameters / template creation
247
+ - Data cleanup per field
248
+ - advanced table parsing with [pypdf_table_extraction](https://github.com/py-pdf/pypdf_table_extraction)
290
249
 
291
250
  ## Maintainers
292
251
 
@@ -294,14 +253,22 @@ If you are interested in improving this project, have a look at our
294
253
  - [Alexis de Lattre](https://github.com/alexis-via)
295
254
  - [bosd](https://github.com/bosd)
296
255
 
297
- ## Contributors
256
+ ## Contributors and Credits
257
+
258
+ - [Harshit Joshi](https://github.com/duskybomb): As Google Summer of
259
+ Code student.
260
+ - [Holger Brunn](https://github.com/hbrunn): Add support for parsing
261
+ invoice items.
262
+
263
+ [pypi]: https://pypi.org/
264
+ [file an issue]: https://github.com/invoice-x/invoice2data/issues
265
+ [pip]: https://pip.pypa.io/
298
266
 
299
- - [Harshit Joshi](https://github.com/duskybomb): As Google Summer of
300
- Code student.
301
- - [Holger Brunn](https://github.com/hbrunn): Add support for parsing
302
- invoice items.
267
+ Contributions are very welcome.
268
+ To learn more, see the [Contributor Guide].
303
269
 
304
270
  ## Used By
271
+
305
272
  - Odoo, OCA module [account_invoice_import_invoice2data](https://github.com/OCA/edi)
306
273
 
307
274
  ## Related Projects
@@ -314,3 +281,9 @@ If you are interested in improving this project, have a look at our
314
281
  (Commercial)
315
282
  - [CVision](http://www.cvisiontech.com/library/document-automation/forms-processing/extract-data-from-invoice.html)
316
283
  (Commercial)
284
+
285
+ <!-- github-only -->
286
+
287
+ [license]: https://invoice2data.readthedocs.io/latest/license.html
288
+ [contributor guide]: https://invoice2data.readthedocs.io/latest/contributing.html
289
+ [command-line reference]: https://invoice2data.readthedocs.io/latest/usage.html
@@ -1,11 +1,32 @@
1
1
  # Data extractor for PDF invoices - invoice2data
2
2
 
3
+ [![Read the documentation at https://invoice2data.readthedocs.io/](https://img.shields.io/readthedocs/invoice2data/latest.svg?label=Read%20the%20Docs)][read the docs]
3
4
  [![invoice2data build status on GitHub Actions](https://github.com/invoice-x/invoice2data/workflows/Test/badge.svg)](https://github.com/invoice-x/invoice2data/actions)
4
5
  [![Version](https://img.shields.io/pypi/v/invoice2data.svg)](https://pypi.python.org/pypi/invoice2data)
5
6
  [![Support Python versions](https://img.shields.io/pypi/pyversions/invoice2data.svg)](https://pypi.python.org/pypi/invoice2data)
6
-
7
- A command line tool and Python library to support your accounting
8
- process.
7
+ [![License](https://img.shields.io/pypi/l/invoice2data)][license]
8
+ [![Tests](https://github.com/invoice-x/invoice2data/workflows/Tests/badge.svg)][tests]
9
+ [![Codecov](https://codecov.io/gh/invoice-x/invoice2data/branch/main/graph/badge.svg)][codecov]
10
+ [![pre-commit](https://img.shields.io/badge/pre--commit-enabled-brightgreen?logo=pre-commit&logoColor=white)][pre-commit]
11
+ [![Ruff](https://img.shields.io/endpoint?url=https://raw.githubusercontent.com/astral-sh/ruff/main/assets/badge/v2.json)](https://github.com/astral-sh/ruff)
12
+
13
+ [pypi status]: https://pypi.org/project/invoice2data/
14
+ [read the docs]: https://invoice2data.readthedocs.io/
15
+ [tests]: https://github.com/invoice-x/invoice2data/actions?workflow=Tests
16
+ [codecov]: https://app.codecov.io/gh/invoice-x/invoice2data
17
+ [pre-commit]: https://github.com/pre-commit/pre-commit
18
+ [ruff badge]: https://img.shields.io/endpoint?url=https://raw.githubusercontent.com/astral-sh/ruff/main/assets/badge/v2.json
19
+ [ruff project]: https://github.com/charliermarsh/ruff
20
+
21
+ A command line tool and Python library that automates the extraction of key information from invoices to support your accounting
22
+ process. The library is very flexible and can be used on other types of business documents as well.
23
+
24
+ In essence, invoice2data simplifies the process of getting data from invoices by:
25
+
26
+ Automating text extraction: No more manual copying and pasting.
27
+ Using templates for structure: Handles different invoice layouts.
28
+ Providing structured output: Makes the data ready for analysis or further processing.
29
+ This makes it a valuable tool for businesses and developers dealing with a large volume of invoices, saving time and reducing errors associated with manual data entry.
9
30
 
10
31
  1. extracts text from PDF files using different techniques, like
11
32
  `pdftotext`, `text`, `ocrmypdf`, `pdfminer`, `pdfplumber` or OCR -- `tesseract`, or
@@ -31,92 +52,11 @@ Go from PDF files to this:
31
52
  {'date': (2014, 8, 3), 'invoice_number': '42183017', 'amount': 4.11, 'desc': 'Invoice 42183017 from Amazon Web Services'}
32
53
  {'date': (2015, 1, 28), 'invoice_number': '12429647', 'amount': 101.0, 'desc': 'Invoice 12429647 from Envato'}
33
54
 
34
- ```mermaid
35
- flowchart LR
36
-
37
- InvoiceFile[fa:fa-file-invoice Invoicefile\n\npdf\nimage\ntext] --> Input-module(Input Module\n\npdftotext\ntext\npdfminer\npdfplumber\ntesseract\ngvision)
38
-
39
- Input-module --> |Extracted Text| C{keyword\nmatching}
40
-
41
- Invoice-Templates[(fa:fa-file-lines Invoice Templates)] --> C{keyword\nmatching}
42
-
43
- C --> |Extracted Text + fa:fa-file-circle-check Template| E(Template Processing\n apply options from template\nremove accents, replaces etc...)
44
-
45
- E --> |Optimized String|Plugins&Parsers(Call plugins + parsers)
46
-
47
- subgraph Plugins&Parsers
48
-
49
- direction BT
50
-
51
- tables[fa:fa-table tables] ~~~ lines[fa:fa-grip-lines lines]
52
-
53
- lines ~~~ regex[fa:fa-code regex]
54
-
55
- regex ~~~ static[fa:fa-check static]
56
-
57
-
58
-
59
- end
60
-
61
- Plugins&Parsers --> |output| result[result\nfa:fa-file-csv,\njson,\nXML]
62
-
63
-
64
-
65
- click Invoice-Templates https://github.com/invoice-x/invoice2data/blob/master/TUTORIAL.md
66
-
67
- click result https://github.com/invoice-x/invoice2data#usage
68
-
69
- click Input-module https://github.com/invoice-x/invoice2data#installation-of-input-modules
70
-
71
- click E https://github.com/invoice-x/invoice2data/blob/master/TUTORIAL.md#options
72
-
73
- click tables https://github.com/invoice-x/invoice2data/blob/master/TUTORIAL.md#tables
74
-
75
- click lines https://github.com/invoice-x/invoice2data/blob/master/TUTORIAL.md#lines
76
-
77
- click regex https://github.com/invoice-x/invoice2data/blob/master/TUTORIAL.md#regex
78
-
79
- click static https://github.com/invoice-x/invoice2data/blob/master/TUTORIAL.md#parser-static
80
-
81
- ```
82
-
83
- ## Installation
84
-
85
- 1. Install pdftotext
86
-
87
- If possible get the latest
88
- [xpdf/poppler-utils](https://poppler.freedesktop.org/) version. It's
89
- included with macOS Homebrew, Debian and Ubuntu. Without it, `pdftotext`
90
- won't parse tables in PDF correctly.
91
-
92
- 2. Install `invoice2data` using pip
93
-
94
- pip install invoice2data
95
-
96
- ### Installation of input modules
97
-
98
- An [tesseract](https://github.com/tesseract-ocr/tessdoc/blob/main/FAQ.md#how-do-i-get-tesseract) wrapper is included in auto language mode. It will test your input files against the languages installed on your system. To use it tesseract and imagemagick needs to be installed.
99
- tesseract supports multiple OCR engine modes. By default the available engine installed on the system will be used.
100
-
101
- Languages:
102
- tesseract-ocr recognize more than [100 languages](https://github.com/tesseract-ocr/tessdata)
103
- For Linux users, you can often find packages that provide language packs:
104
-
105
- ```
106
- # Display a list of all Tesseract language packs
107
- apt-cache search tesseract-ocr
108
-
109
- # Debian/Ubuntu users
110
- apt-get install tesseract-ocr-chi-sim # Example: Install Chinese Simplified language pack
111
-
112
- # Arch Linux users
113
- pacman -S tesseract-data-eng tesseract-data-deu # Example: Install the English and German language packs
114
-
115
- ```
116
55
 
117
56
  ## Usage
118
57
 
119
58
  Basic usage. Process PDF files and write result to CSV.
59
+ Please see the [Command-line Reference] for details.
120
60
 
121
61
  - `invoice2data invoice.pdf`
122
62
  - `invoice2data invoice.txt`
@@ -130,7 +70,7 @@ Choose any of the following input readers:
130
70
  - pdfminer.six `invoice2data --input-reader pdfminer invoice.pdf`
131
71
  - pdfplumber `invoice2data --input-reader pdfplumber invoice.pdf`
132
72
  - ocrmypdf `invoice2data --input-reader ocrmypdf invoice.pdf`
133
- - gvision `invoice2data --input-reader gvision invoice.pdf` (needs `GOOGLE_APPLICATION_CREDENTIALS` env var)
73
+ - gvision `invoice2data --input-reader gvision invoice.pdf` (needs `GOOGLE_APPLICATION_CREDENTIALS` env var and a Google Cloud Bucket name. The bucket name can be set as an argument to the function ``to_text`` or as an Environment variable named ``GOOGLE_CLOUD_BUCKET_NAME`` )
134
74
 
135
75
  Choose any of the following output formats:
136
76
 
@@ -180,13 +120,12 @@ Using in-house templates
180
120
  templates = read_templates('/path/to/your/templates/')
181
121
  result = extract_data(filename, templates=templates)
182
122
 
183
-
184
123
  ## Template system
185
124
 
186
125
  See `invoice2data/extract/templates` for existing templates. Just extend
187
126
  the list to add your own. If deployed by a bigger organisation, there
188
127
  should be an interface to edit templates for new suppliers. 80-20 rule.
189
- For a short tutorial on how to add new templates, see [TUTORIAL.md](TUTORIAL.md).
128
+ For a short tutorial on how to add new templates, see [tutorial.md](./docs/tutorial.md).
190
129
 
191
130
  Templates are based on Yaml or JSON. They define one or more keywords to find
192
131
  the right template, one or more exclude_keywords to further narrow it down
@@ -200,6 +139,7 @@ processing.
200
139
 
201
140
  Example:
202
141
 
142
+ ````yaml
203
143
  issuer: Amazon Web Services, Inc.
204
144
  keywords:
205
145
  - Amazon Web Services
@@ -223,8 +163,10 @@ Example:
223
163
  line: (.*)\$(\d+\.\d+)
224
164
  skip_line: Note
225
165
  last_line: VAT \*\*
166
+ ````
226
167
 
227
168
  The lines package has multiple settings:
169
+
228
170
  - start > The pattern where the lines begin. This is typically the header row of the table. This row is not included in the line matching.
229
171
  - end > The pattern denoting where the lines end. Typically some text at the very end or immediately below the table. Also not included in the line matching.
230
172
  - first_line > Optional. This is the primary line item for each entry.
@@ -237,20 +179,20 @@ As an alternative json templates can be used. Which are natively better supporte
237
179
 
238
180
  The performance with yaml templates can be greatly increased **10x** by using [libyaml](https://github.com/yaml/libyaml)
239
181
  It can be installed on most distributions by:
240
- `sudo apt-get libyaml-dev`
241
-
182
+ `sudo apt-get install libyaml-dev`
242
183
 
243
184
  ## Development
244
185
 
245
186
  If you are interested in improving this project, have a look at our
246
- [developer guide](DEVELOP.md) to get you started quickly.
187
+ [developer guide](./CONTRIBUTING.md) to get you started quickly.
247
188
 
248
189
  ## Roadmap and open tasks
249
190
 
250
191
  - integrate with online OCR?
251
192
  - try to 'guess' parameters for new invoice formats.
252
- - can apply machine learning to guess new parameters?
253
- - advanced table parsing with [camelot](https://github.com/camelot-dev/camelot)
193
+ - apply machine learning to guess new parameters / template creation
194
+ - Data cleanup per field
195
+ - advanced table parsing with [pypdf_table_extraction](https://github.com/py-pdf/pypdf_table_extraction)
254
196
 
255
197
  ## Maintainers
256
198
 
@@ -258,14 +200,22 @@ If you are interested in improving this project, have a look at our
258
200
  - [Alexis de Lattre](https://github.com/alexis-via)
259
201
  - [bosd](https://github.com/bosd)
260
202
 
261
- ## Contributors
203
+ ## Contributors and Credits
262
204
 
263
- - [Harshit Joshi](https://github.com/duskybomb): As Google Summer of
264
- Code student.
265
- - [Holger Brunn](https://github.com/hbrunn): Add support for parsing
266
- invoice items.
205
+ - [Harshit Joshi](https://github.com/duskybomb): As Google Summer of
206
+ Code student.
207
+ - [Holger Brunn](https://github.com/hbrunn): Add support for parsing
208
+ invoice items.
209
+
210
+ [pypi]: https://pypi.org/
211
+ [file an issue]: https://github.com/invoice-x/invoice2data/issues
212
+ [pip]: https://pip.pypa.io/
213
+
214
+ Contributions are very welcome.
215
+ To learn more, see the [Contributor Guide].
267
216
 
268
217
  ## Used By
218
+
269
219
  - Odoo, OCA module [account_invoice_import_invoice2data](https://github.com/OCA/edi)
270
220
 
271
221
  ## Related Projects
@@ -278,3 +228,9 @@ If you are interested in improving this project, have a look at our
278
228
  (Commercial)
279
229
  - [CVision](http://www.cvisiontech.com/library/document-automation/forms-processing/extract-data-from-invoice.html)
280
230
  (Commercial)
231
+
232
+ <!-- github-only -->
233
+
234
+ [license]: https://invoice2data.readthedocs.io/latest/license.html
235
+ [contributor guide]: https://invoice2data.readthedocs.io/latest/contributing.html
236
+ [command-line reference]: https://invoice2data.readthedocs.io/latest/usage.html