Heim  >  Artikel  >  Backend-Entwicklung  >  Python realisiert die Erkennung, Extraktion und das Schreiben von PD-Texten in die Skriptfreigabe von CSV-Dateien

Python realisiert die Erkennung, Extraktion und das Schreiben von PD-Texten in die Skriptfreigabe von CSV-Dateien

PHPz
PHPznach vorne
2023-05-17 19:40:041828Durchsuche

🔜 Inhalt

Python 实现 PD 文字识别、提取并写入 CSV 文件脚本分享 3.4 Verarbeiten Sie die identifizierten Daten und schreiben Sie sie in eine CSV-Datei

Zusammenfassung

1. Vorwort

Alle Papierdaten werden nach dem Scannen archiviert Mobiltelefon, wenn Sie es verwenden möchten, und sparen Sie Aufwand und Mühe. Den Vorteilen des gescannten Dokuments steht jedoch auch ein Nachteil gegenüber. Da es über ein elektronisches Gerät gescannt wird, ist das Ergebnis ein Bild. Wenn Sie den Inhalt der Datei verarbeiten möchten, ist eine direkte Bedienung nicht möglich.

Was ist, wenn Sie den Inhalt zitieren möchten? Machen Sie sich keine Sorgen, Python hilft Ihnen bei der Lösung des Problems.

2. Anforderungsbeschreibung

Es liegt eine gescannte PDF-Kopie vor. Wir möchten den Text in ein CSV-Dokument in drei Spalten schreiben. Der Inhalt und die Wirkung sind wie folgt:

csvexample

3. Beginnen Sie mit der Nutzung Ihrer Hände und Ihres Gehirns

PDF-Scans sind Dokumente, die in ein Computerbildformat gescannt und in sie umgewandelt werden. Das Extrahieren des Textes entspricht dem Erkennen des Textes im Bild. Daher besteht unsere Aufgabe darin, das PDF in ein Bild umzuwandeln und dann mit dem OCR-Tool den Text im Bild zu extrahieren.

3.1 Relevante Pakete von Drittanbietern installieren

pip3 install pdf2image pytesseract

3.2 Die erforderlichen Bibliotheken von Drittanbietern importieren

import os #处理文件
from pdf2image import convert_from_path# pdf转图片
import pytesseract# 识别图片文字
import csv# 处理csv文件

3.3 Die PDF-Datei lesen und den Inhalt identifizieren

Python 实现 PD 文字识别、提取并写入 CSV 文件脚本分享tess_ocr(pdf_path, lang, first_page, last_page)

Die PDF-Datei aufteilen In Bilder aufteilen, Text extrahieren und in eine Textdatei schreiben

Python 实现 PD 文字识别、提取并写入 CSV 文件脚本分享 pdf_path: Der Speicherpfad der PDF-Datei

Bild: Eine Liste von PIL-Bildern, die jede Seite des PDF-Dokuments darstellen

first_page: Ermöglicht das Festlegen der ersten Seite von pdftoppm verarbeitete Seite;

last_page: ermöglicht das Festlegen der letzten Seite, die von pdftoppm verarbeitet werden soll

fmt: ermöglicht die Angabe des Ausgabeformats. Die derzeit unterstützten Formate sind JPG, PNG und ppm;

Ausgabeordner: Bildspeicherpfad

def tess_ocr(pdf_path, lang,first_page,last_page):
# 创建一个和pdf同名的文件夹
 images = convert_from_path(pdf_path, fmt='png',first_page=first_page,last_page=last_page,output_folder=imagefolder,userpw='site')# 转成图片
text = ''
for img in images:
 text += pytesseract.image_to_string(img, lang=lang) # 识别图片文字
 with open(r'exampledata.txt' 'a', encoding='utf-8') as f: #写入txt文件
 f.write(text)

Laufergebnisse

Erstellen Sie einen Ordner mit demselben Namen, um die geteilten Bilder zu speichern, extrahieren Sie dann den Bildtext und schreiben Sie ihn in Daten .txt

Lösung: Pler herunterladen . ?? pytesseract.pytesseract.TesseractNotFoundError: Tesseract ist nicht installiert oder befindet sich nicht in Ihrem PATH. Weitere Informationen finden Sie in der README-Datei. Lösung: Laden Sie zusätzlich tesseract herunter und installieren Sie es. ocr und Umgebungsvariablen konfigurieren.

    3.4 Verarbeiten Sie die identifizierten Daten und schreiben Sie sie in eine CSV-Datei.
  • Änderung (Eingabedatei, Ausgabedatei)
  • Bereinigen des generierten Textdokuments Verarbeitung Die Adresse der neuen Datei
  • def modification(infile, outfile):
    infp = open(infile, "r",encoding='utf-8')
    outfp = open(outfile, "w",encoding='utf-8')
    lines = infp.readlines() #返回列表,包含所有的行。
    #依次读取每行
    for li in lines:
    if li.split(): #str.split(str="", num=string.count(str)),过滤文件中的空行
    # 根据识别情况对数据进行清洗
    li = li.replace('[', ' ').replace(']', '')
    outfp.writelines(li)
    infp.close()
    outfp.close()
    
    
    
    
  • Das laufende Ergebnis
  • generiert eine neue TXT-Datei. Die neue Datei löscht die Leerzeilen in data.txt und ersetzt den falsch erkannten Inhalt in der Originaldatei durch den richtigen.

writercsv(intxt,outcsv)

Schreiben Sie die Textdatei mit Leerzeichen in die CSV-Tabelle.

Python 实现 PD 文字识别、提取并写入 CSV 文件脚本分享

intxt: Adresse der Textdatei.

outcsv: Neu generierte CSV-Datei.

def writercsv(intxt,outcsv):
# 使用newlines=''可保证存储的数据不空行。
csvFile = open(outcsv, 'a',newline='', encoding='utf-8') 
writer = csv.writer(csvFile)
csvRow = []
f = open(intxt,'r',encoding='utf-8')
for line in f:
csvRow = line.split() #以空格为分隔符
if len(csvRow)>1 and len(csvRow)<=3:#约束条件,视情况而定
 writer.writerow(csvRow)
f.close()
csvFile.close()


Laufergebnis

Erstellen Sie eine dreispaltige Datei CSV-Datei, die erste Spalte ist der englische Name, die zweite Spalte ist der chinesische Name und die dritte Spalte ist das Land

image-20211215204846623

Python 实现 PD 文字识别、提取并写入 CSV 文件脚本分享

image-20211215204941725

Zusammenfassung

Durch diese Studie haben wir die Notwendigkeit erkannt, Text aus gescannten Dokumenten zu extrahieren und den Inhalt je nach Bedarf in Dokumente in verschiedenen Formaten zu schreiben.

Zuerst dachte ich, dass die Bibliothek zum Extrahieren von PDFs auch für gescannte Dokumente funktionieren würde, also habe ich die Pdfplumber-Bibliothek und die PyPDF2-Bibliothek ausprobiert.

Practice hat festgestellt, dass Pdfplumber nur Wasserzeichen in gescannten PDFs erkennen kann und nicht auf gescannte PDFs anwendbar ist. Die PyPDF2-Bibliothek wird ausgeführt und meldet einen Fehler: NotImplementedError: Nur Algorithmuscode 1 und 2 werden unterstützt.

Der Grund dafür ist, dass dieses verschlüsselte PDF möglicherweise von einer höheren Version von Acrobot stammt, sodass der entsprechende Verschlüsselungsalgorithmus-Code „4“ lautet. Das vorhandene pypdf2-Modul unterstützt jedoch nicht nur die Verschlüsselungsalgorithmus-Codenamen „1“ oder „2“. 'verschlüsselte PDF-Datei.

Das obige ist der detaillierte Inhalt vonPython realisiert die Erkennung, Extraktion und das Schreiben von PD-Texten in die Skriptfreigabe von CSV-Dateien. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

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