Mit IQ Bot können Sie frei wählen, welche OCR-Engine verarbeitet werden soll.
Die Funktionen und Gewohnheiten der OCR-Engine, die ausgewählt werden können, sind in diesem Artikel zusammengefasst, je nach Engine jedoch das Datum im Format "JJJJ / MM / TT" In einigen Fällen wurde das "/" (Schrägstrich) als "1" gelesen.
Beispiel: Was als 2020/11/11 geschrieben wird, wird als 2020111111 usw. gelesen.
In einem solchen Fall ist es natürlich üblich, den Datumstyp anzugeben und [Fehlererkennung] durchzuführen (https://qiita.com/IQ_Bocchi/items/4e220a9bd6e337de4508), aber benutzerdefiniert Es ist effizienter, Logik zu verwenden, um die Form bis zu einem gewissen Grad zu korrigieren und dann die Fehlererkennung anzuwenden.
Aus diesem Grund werde ich die benutzerdefinierte Logik veröffentlichen, die ich für die Titelausgabe erstellt habe.
Wenn ich es in verschiedene Fälle aufteilen würde, wäre die Anzahl der Zeilen ziemlich groß. Wenn Sie einen einfacheren Weg finden, kommentieren Sie bitte.
Geben Sie den Schrägstrich des Datums, das als 1 gelesen wurde, in den Schrägstrich zurück
#Eine Funktion, die das Zeichen durch einen Schrägstrich ersetzt, wenn sich an der Stelle, an der sich der Schrägstrich befinden soll, eine 1 befindet
def slashConvert(x,index):
if x[index] == "1":
x = x[:index] + "/" + x[index + 1:]
return x
#Eine Funktion, die die Position angibt, an der der Schrägstrich eingegeben werden soll, und die Konvertierung anwendet
# x =Ursprünglicher Wert, y=Anzahl der Ziffern im Jahr(YYYY/MM/4 für DD,YY/MM/2 für DD)geben
def date1toSlash(x,y):
#Wenn es bereits zwei oder mehr Schrägstriche enthält, kehren Sie so zurück, wie es ist
if "/" in x:
if len(x.split("/")) >= 3:
return x
#Minimum nach der Jahreszahl/M/Es sollten 4 oder mehr Zeichen in D sein
#Wenn dies nicht der Fall ist, kehren Sie so zurück, wie es ist(=Durch Überprüfung erkannt)
if len(x) < y + 4:
return x
#Setzen Sie einen Schrägstrich zwischen Jahr und Monat
x = slashConvert(x,y)
#Fragen Sie, in welcher Ziffer sich der Schrägstrich befindet, um den Schrägstrich zwischen Monat und Tag zu setzen
#Wenn es unbekannt ist, geben Sie → so wie es ist zurück, ein unvollständiger Wert wird als Datum zurückgegeben, so dass er durch Überprüfung auf der IQ Bot-Seite erkannt werden kann.
if len(x) == y + 6: #6 Ziffern außer Jahr= /MM/DD =2 Ziffern für Monat und Tag=Die dritte Ziffer vom Schwanz ist ein Schrägstrich
mdIndex = -3
elif len(x) == y + 5: #5 Ziffern außer Jahr= /M/DD or /MM/D ← Es ist notwendig, einen zu identifizieren
if 2 <= int(x[y+1]) <= 9: #Februar-September, wenn die nächste Ziffer des Jahres 2-9 ist=Da es sich um einen einstelligen Monat handelt, ist M./DD =Die dritte Ziffer vom Schwanz ist ein Schrägstrich
mdIndex = -3
elif x[y+1] == "0": #Die nächste Ziffer des Jahres ist Null= MM/D? Es ist jedoch verdächtig, dass nur der Monat mit Null gefüllt ist. Kehren Sie also so zurück, wie er ist
return x
elif x[-3:-1] == "11": #Die 3. Ziffer vom Schwanz und die 2. Ziffer vom Schwanz sind "11" (dh die letzten 4 Ziffern sind "?11?)Im Falle von
if x[-4:] == "1110": #1 für 1110/Es wird beschlossen, 10 zu sein, aber ...
mdIndex = -3
else: #Andere als die oben genannten (1111 usw.) 1/Ist es 11?/Ich kann nicht beurteilen, ob es 1 ist, also kehre ich einfach zurück
return x
elif (x[-3] == "1") and (x[-2] != "1"): #1, wenn der Datumsteil 1120 ist/Bestimmt auf 20
mdIndex = -3
elif (x[-2] == "1") and (x[-3] != "1"): #12, wenn der Datumsteil 1211 ist/Bestimmt auf 1
mdIndex = -2
else: #Es werden keine anderen Muster als die oben genannten erwartet
return x
else: #Ein 4-stelliges Muster außer dem Jahr, das zu etwas anderem kommt= /M/Da es D ist, ist die zweite Ziffer von unten ein Schrägstrich
mdIndex = -2
x = slashConvert(x,mdIndex)
return x
#Bei der Anwendung auf Feldelemente beträgt die Anzahl der Ziffern im Jahr 4
field_value = date1toSlash(field_value,4)
#Bei der Anwendung auf Tabellenelemente beträgt die Anzahl der Stellen im Jahr 2 Stellen
df['Spaltenname'] = df['Spaltenname'].apply(date1toSlash,y=2)
Es wird angenommen, dass der Code bei der Anwendung auf die obige Tabelle zwischen Magic Code liegt.