gpt4 book ai didi

python - Python:如何使用ML从各种PDF中提取特定数据

转载 作者:行者123 更新时间:2023-12-02 16:31:06 25 4
gpt4 key购买 nike

在我当前尝试创建的ML项目方面需要帮助。
我从许多不同的供应商那里收到了很多发票-都是以他们自己独特的布局。我需要从发票中提取4个关键要素。这4个元素都位于所有不同发票的表/行/节中。
元素是:

  • 帐单编号/发票编号
  • 开票日期
  • SGST,CGST已应用
  • 总金额/应付总金额/应付账单总额

  • 输入文件:
    Please find the input file link
    我从基于正则表达式的模板方法开始了这个项目。但是,这根本无法扩展,我最终得到了许多不同的规则。
    到目前为止,我已经应用了:
    import textract
    text = textract.process('datafile.pdf')

    processed_text=text.lower()
    processed_text= processed_text.replace('\n',' ')
    processed_text= processed_text.replace('*',' ')
    processed_text= processed_text.replace('/',' ')

    from nltk.corpus import stopwords
    from nltk.tokenize import word_tokenize
    text_tokens = word_tokenize(processed_text)
    text_without_stopwords = [word for word in text_tokens if not word in stopwords.words{}]
    processed_text = " ".join(text_without_stopwords)

    regex_invoice_no = re.compile(r"Invoice No\s*:\s*(\d+)")
    regex_date = re.compile(r"Date of Billing\s*:\s*(\d\d\.\d\d\.\d{4})")
    regex_SGST = re.compile(r"SGST:\s*:\s*(\d+)")
    regex_CGST = re.compile(r"CGST:\s*:\s*(\d+)")
    regex_total_due = re.compile(r"Total Amount Due:\s*:\s*(\d+)")

    invoice_no= re.search(regex_invoice_no, output_string.getvalue()).group(1),
    issue_date= re.search(regex_date, output_string.getvalue()).group(1),
    sgst= re.search(regex_SGST, output_string.getvalue()).group(1),
    cgst= re.search(regex_CGST, output_string.getvalue()).group(1),
    amount= re.search(regex_total_due, output_string.getvalue()).group(1)}

    print(invoice_no, issue_date, sgst,cgst, amount)
    输出:
    对于上述发票,我需要每个PDF的输出。例如,可能是这样的:
    {
    "Invoice No":"INXXXXXXXX",
    "SGST":"260",
    "CGST":"290",
    "Date of Billing":"3-",
    "Total Amount Due":"258.93"
    }

    最佳答案

    我想那会是这样。

    import PyPDF2
    import re
    mypdf = open('C:\\your_path\\your_file.pdf', mode='rb')
    pdf_document = PyPDF2.PdfFileReader(mypdf)
    pdf_document.numPages
    first_page = pdf_document.getPage(0)
    print(first_page.extractText())

    pdf_document = PyPDF2.PdfFileReader(mypdf)
    pdf_document.numPages

    page_one = pdf_document.getPage(0)
    first = re.findall(r'Invoice No', str(first_page.extractText()))
    second = re.findall(r'SGST', str(first_page.extractText()))
    third = re.findall(r'CGST', str(first_page.extractText()))
    print(first,second,third)

    first=str('Invoice Number:')+str(first)
    second=str('SGST:')+str(second)
    third=str('CGST:') + str(third)
    final = first + second + third

    print(final)
    当然,您可以循环浏览一堆PDF文件,并将所有这些数据点附加到不断增长的列表中。
    在ML方面,我无法告诉您您在做什么,但是您可以从下面的链接中找到一些很好的入门方法。
    https://github.com/ASH-WICUS/Notebooks/blob/master/Natural%20Language%20Processing%20-%20Amazon%20Reviews.ipynb

    关于python - Python:如何使用ML从各种PDF中提取特定数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64320683/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com