Ecoligo und Bettervest sind zwei innovative Plattformen, die sich darauf spezialisiert haben, nachhaltige Investitionsmöglichkeiten zu bieten. Ecoligo ermöglicht es Privatpersonen, in Solarprojekte in aufstrebenden Märkten zu investieren, um den Ausbau erneuerbarer Energien voranzutreiben und gleichzeitig attraktive Renditen zu erzielen. Bettervest konzentriert sich auf Crowdinvesting in Energieeffizienzprojekte und erneuerbare Energien, bei denen Menschen von Einsparungen und ökologischen Verbesserungen profitieren können. Beide Unternehmen tragen dazu bei, die Finanzierungslücke im Bereich grüner Technologien zu schließen und bieten gleichzeitig eine nachhaltige Investitionsmöglichkeit.
Beide Plattformen nutzen secupay als Zahlungsdienstleister. Secupay kümmert sich dabei auch um das Bezahlen der Kapitalsteuer und sonstiger Abgaben. Für die jährliche Steuererklärung erstellt Secupay eine PDF Datei für jedes Projekt, welche auf der jeweiligen Platform heruntergeladen werden kann.
Hat man in viele Projekte investiert, so erhält man entsprechend viele PDF Dateien. Um den Übertrag der Daten in die Steuererklärung zu vereinfachen kann das folgende Pythonskript genutzt werden (KEINE GARANTIE AUF RICHTIGKEIT!). Dies gibt mit dem Kommando
python3 extract.py --output csv *.pdf
eine CSV Tabelle mit den Daten aus allen PDFs aus, welches in Excel oder andere Tabellenkalkulationen kopiert werden kann. Hier das Skript:
import re
import PyPDF2
import sys
import csv
import argparse
def extract_info_and_table(pdf_path):
# Load PDF file
with open(pdf_path, 'rb') as pdf_file:
# Initialize PDF reader
pdf_reader = PyPDF2.PdfReader(pdf_file)
pdf_text = ""
# Extract text from each page
for page in pdf_reader.pages:
pdf_text += page.extract_text()
# Extract string between "das Investment" and "in 202"
match = re.search(r'das Investment(.*?)in 202', pdf_text, re.DOTALL)
investment_info = match.group(1).strip() if match else "Not Found"
# Extract table
table_start = pdf_text.find('wurden für das Investment')
table_end = pdf_text.find('Pulsnitz,den', table_start)
table_text = pdf_text[table_start:table_end].strip()
# Process table content into dictionary format
table_dict = {}
table_lines = table_text.splitlines()
for line in table_lines:
parts = re.split(r'(\d+,\d+\s*€)', line.strip())
if len(parts) == 3:
description = parts[0].strip()
amount = parts[1].strip()
table_dict[description] = amount
return investment_info, table_dict
def main():
# Setup argument parser
parser = argparse.ArgumentParser(description='Extract information and tables from PDFs and output as CSV or console.')
parser.add_argument('pdf_files', nargs='+', help='Paths to PDF files.')
parser.add_argument('--output', choices=['csv', 'console'], default='console', help='Output format: csv or console.')
args = parser.parse_args()
# Initialize aggregated data for CSV output
aggregated_data = {}
investment_infos = []
# Process each PDF file
for pdf_file in args.pdf_files:
investment_info, table_dict = extract_info_and_table(pdf_file)
if args.output == 'csv':
investment_infos.append(investment_info)
for key, value in table_dict.items():
if key not in aggregated_data:
aggregated_data[key] = []
aggregated_data[key].append(value)
if args.output == 'csv':
# Write the aggregated data to CSV format
csv_writer = csv.writer(sys.stdout, quoting=csv.QUOTE_ALL)
# Write the header row
header = ['Description'] + investment_infos
csv_writer.writerow(header)
# Write the rows
for key, values in aggregated_data.items():
row = [key] + values
csv_writer.writerow(row)
else:
# Print each PDF content to console
for pdf_file in args.pdf_files:
investment_info, table_dict = extract_info_and_table(pdf_file)
print(f"Extracted Information from {pdf_file}:")
print(f"Investment Info: {investment_info}")
print("Table Content:")
for description, amount in table_dict.items():
print(f"{description}: {amount}")
print("\n")
if __name__ == "__main__":
main()
Gegebenenfalls müssen vorher die Python-Module installiert werden. Am Einfachsten geht dies mit pip:
pip install --upgrade PyPDF2
Leave a Reply