Heim  >  Artikel  >  Backend-Entwicklung  >  So implementieren Sie die Batch-Datenextraktion über Python

So implementieren Sie die Batch-Datenextraktion über Python

王林
王林nach vorne
2023-04-29 21:16:051868Durchsuche

Konfigurationsanforderungen

1.ImageMagick

2.tesseract-OCR

3.Python3.7

4.from PIL import Image as PI

5.import io

6.import os

7.import pyocr .builders

8.from cnocr import CnOcr

9.import xlwt

So implementieren Sie die Batch-Datenextraktion über Python

Bei der Analyse des obigen Bildes haben wir festgestellt, dass der Rechnungsbetrag „zweihunderttausend Yuan“ beträgt und der Datenbetrag in chinesischen Großbuchstaben angegeben ist Vor dem Import in Excel müssen wir die Daten der Betragsrechnung in ein numerisches Format konvertieren. Auf dieser Grundlage müssen wir zunächst die Konvertierung der chinesischen Großbuchstaben und Zahlen abschließen.

def chineseNumber2Int(strNum: str):
    result = 0
    temp = 1  # 存放一个单位的数字如:十万
    count = 0  # 判断是否有chArr
    cnArr = ['壹', '贰', '叁', '肆', '伍', '陆', '柒', '捌', '玖']
    chArr = ['拾', '佰', '仟', '万', '亿']
    for i in range(len(strNum)):
        b = True
        c = strNum[i]
        for j in range(len(cnArr)):
            if c == cnArr[j]:
                if count != 0:
                    result += temp
                    count = 0
                temp = j + 1
                b = False
                break
        if b:
            for j in range(len(chArr)):
                if c == chArr[j]:
                    if j == 0:
                        temp *= 10
                    elif j == 1:
                        temp *= 100
                    elif j == 2:
                        temp *= 1000
                    elif j == 3:
                        temp *= 10000
                    elif j == 4:
                        temp *= 100000000
                count += 1
        if i == len(strNum) - 1:
            result += temp
    return result

Der obige Code kann zum Konvertieren von Großbuchstaben und Zahlen verwendet werden. Geben Sie beispielsweise „Zwanzigtausend Yuan“ ein, um „200000“ zu exportieren, und konvertieren Sie ihn dann in Zahlen, um die Bedienung der Tabelle erheblich zu vereinfachen ist hilfreich für die Datenarchivierung beim Ausführen von Tabellenoperationen.

Als nächstes müssen wir den internen Inhalt der Rechnung analysieren. Aus der Analyse der folgenden Abbildung können wir ersehen, dass wir die folgenden Daten erhalten müssen: „Ausstellungsdatum“, „Eingangsdatum des Wechsels“, „Rechnung“. Nummer“, „Zahlungsempfänger“, „Rechnungsbetrag“ und „Schublade“ können mithilfe einer Zeichensoftware genau positioniert werden.

So implementieren Sie die Batch-Datenextraktion über Python

Wie im Bild gezeigt, ist der kleine schwarze Punkt der Ort, an dem sich die Maus befindet, und die untere linke Ecke der Zeichensoftware sind ihre Koordinaten. Extrahieren Sie das Ausstellungsdatum der Rechnung reee

Nach all dem Daten wurden extrahiert. Danach müssen wir in der Einrichtungsphase zunächst alle Rechnungsdateien extrahieren und deren Dateinamen und Pfade ermitteln.

def text1(new_img):
    #提取出票日期
    left = 80
    top = 143
    right = 162
    bottom = 162
    image_text1 = new_img.crop((left, top, right, bottom))
    #展示图片
    #image_text1.show()
    txt1 = tool.image_to_string(image_text1)
    print(txt1)
    return str(txt1)
So implementieren Sie die Batch-Datenextraktion über PythonNachdem Sie es vollständig erhalten haben, können Sie die Daten in Excel importieren.

def text2(new_img):
    #提取金额
    left = 224
    top = 355
    right = 585
    bottom = 380
    image_text2 = new_img.crop((left, top, right, bottom))
    #展示图片
    #image_text2.show()
    image_text2.save("img/tmp.png")
    temp = ocr.ocr("img/tmp.png")
    temp="".join(temp[0])
    txt2=chineseNumber2Int(temp)
    print(txt2)
    return txt2

An diesem Punkt ist der gesamte Prozess abgeschlossen.

Anbei sind alle Quellcodes

def text3(new_img):
    #提取出票人
    left = 177
    top = 207
    right = 506
    bottom = 231
    image_text3 = new_img.crop((left, top, right, bottom))
    #展示图片
    #image_text3.show()
    image_text3.save("img/tmp.png")
    temp = ocr.ocr("img/tmp.png")
    txt3="".join(temp[0])
    print(txt3)
    return txt3

Das obige ist der detaillierte Inhalt vonSo implementieren Sie die Batch-Datenextraktion über Python. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:yisu.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen