Ich ahmte die wunderbaren Vorfahren nach und schrieb den Code von PDF in Python in OCR. Und verwenden. Ich konvertiere das PDF mit poppler in jpg und transkribiere es dann mit Tesseract OCR in eine txt-Datei.
Ich bin ein Anfänger, daher würde ich mich freuen, wenn Sie auf etwas Seltsames im Code hinweisen könnten. Ich habe auch auf viele Websites verwiesen, die ich nicht zitiert habe. Vielen Dank.
In Bezug auf diese Site lautet die Ordnerstruktur wie folgt. So konvertieren Sie PDF mit Python in eine Bilddatei (JPEG, PNG)
Übergeordneter Ordner | Untergeordneter Ordner |
---|---|
\ Aktuell | ¥image_file |
¥pdf_file | |
¥poppler | |
¥txt_file |
import os
import pathlib
from pathlib import Path
from pdf2image import convert_from_path
from PIL import Image
import sys
import pyocr
import pyocr.builders
import pathlib
import glob
def cleanup():
#Verzeichnis mit der zu löschenden IMG-Datei
image_dir = pathlib.Path('./image_file')
#Holen Sie sich eine Liste der JPEG-Dateien in einem Verzeichnis mit glob
jpg_path = list(image_dir.glob('**/*.jpeg'))
#Verzeichnis mit der zu löschenden txt-Datei
txt_dir = pathlib.Path('./txt_file')
#Ruft eine Liste der txt-Dateien in einem Verzeichnis mit glob ab
txt_path = list(txt_dir.glob('**/*.txt'))
if jpg_path == []: #Unterbrechen Sie, wenn die Liste leer ist
pass
else:
for i in jpg_path:
os.remove(i)
if txt_path == []: #Unterbrechen Sie, wenn die Liste leer ist
pass
else:
for i in txt_path:
os.remove(i)
def pdf_to_image():
# poppler/Fügen Sie bin zur Umgebungsvariablen Path hinzu(Vorübergehend)
# Path("__file__").parent.resolve()damit.Gibt den absoluten Pfad des übergeordneten Ordners der py-Datei zurück
poppler_dir = pathlib.Path("__file__").parent.resolve() / "poppler/bin"
#pathsep ist ein Trennzeichen beim Hinzufügen zu Umgebungsvariablen.
os.environ["PATH"] += os.pathsep + str(poppler_dir)
#PDF-Dateipfad
pdf_dir = pathlib.Path('./pdf_file')
#Holen Sie sich eine Liste der PDF-Dateien in einem Verzeichnis mit glob
pdf_path = list(pdf_dir.glob('**/*.pdf'))
# PDF ->In Bild konvertieren(200dpi)
pages = convert_from_path(str(pdf_path[0]))
#Speichern Sie Bilddateien Seite für Seite
image_dir = pathlib.Path("./image_file")
for i, page in enumerate(pages): #Ermitteln Sie die Anzahl der Seiten von Seiten mit der Aufzählungsfunktion
# .Zeigen Sie das Ende des Pfades mit Stiel (Pathlib)
file_name = pdf_path[0].stem + "_{:02d}".format(i + 1) + ".jpeg "
image_path = image_dir / file_name
#Als JPEG speichern
page.save(str(image_path), "JPEG")
def image_ocr():
# tesseract-Übergeben Sie den OCR-Pfad
tessera_path = "C:\***\Tesseract-OCR"
#pathsep ist ein Trennzeichen beim Hinzufügen zu Umgebungsvariablen.
os.environ["PATH"] += os.pathsep + str(tessera_path)
tools = pyocr.get_available_tools()
if len(tools) == 0:
print("No OCR tool found")
sys.exit(1) #Argument 1 gibt 1 im Endstatus zurück
tool = tools[0]
#Verzeichnis mit OCR-Zieldateien
image_dir = pathlib.Path('./image_file')
#Holen Sie sich eine Liste der JPEG-Dateien in einem Verzeichnis mit glob
jpg_path = list(image_dir.glob('**/*.jpeg'))
for i in jpg_path:
#Konvertieren Sie den ocr-Inhalt in die Variable txt
txt = tool.image_to_string(
Image.open(str(i)),
lang="jpn",
builder=pyocr.builders.TextBuilder(tesseract_layout=6)
)
#Variable txt txt_Als txt-Datei im Dateiverzeichnis speichern
with open('./txt_file/' + str(i.stem) + '.txt', mode='wt') as t:
t.write(txt)
Recommended Posts