Hej,
Har en flera år gammalt brädspel som jag och några kompisar skapade i inDesign. Nu vill jag konvertera den grafiska spelplanen till en csv fil utan att förlora någon vital data. När jag försöker skapa ett python-program för detta går dock väldigt mycket data förlorad. Jag lyckas att extrahera koordinaterna för varje spelruta, men inte dess text och annat. Är helt ny på python så gör säkert många misstag. Jag har också använt mig av pytesseract som är en OCR läsare. Vad kan jag göra bättre för att kunna extrahera all data?
Här är min kod:
Har en flera år gammalt brädspel som jag och några kompisar skapade i inDesign. Nu vill jag konvertera den grafiska spelplanen till en csv fil utan att förlora någon vital data. När jag försöker skapa ett python-program för detta går dock väldigt mycket data förlorad. Jag lyckas att extrahera koordinaterna för varje spelruta, men inte dess text och annat. Är helt ny på python så gör säkert många misstag. Jag har också använt mig av pytesseract som är en OCR läsare. Vad kan jag göra bättre för att kunna extrahera all data?
Här är min kod:
Kod:
import cv2 import pytesseract import pandas as pd import numpy as np from PIL import Image pytesseract.pytesseract.tesseract_cmd = r'C:\Program Files\Tesseract-OCR\tesseract.exe' # Ladda in bilden image_path = "C:\\Python\\output.jpg" img = Image.open(image_path) opencvImage = cv2.cvtColor(np.array(img), cv2.COLOR_RGB2BGR) # Konvertera bilden till grayscale gray = cv2.cvtColor(opencvImage, cv2.COLOR_BGR2GRAY) # Använd adaptiv tröskling för att få en binär bild _, thresh = cv2.threshold(gray, 0, 255, cv2.THRESH_BINARY_INV + cv2.THRESH_OTSU) # Hitta konturer i tröskelbilden contours, _ = cv2.findContours(thresh, cv2.RETR_TREE, cv2.CHAIN_APPROX_SIMPLE) # Filtrera bort små konturer baserat på area contours = [cnt for cnt in contours if cv2.contourArea(cnt) > 500] data = [] # Iterera över alla konturer for contour in contours: # Hämta koordinaterna för begränsningsrektangeln x, y, w, h = cv2.boundingRect(contour) # Extrahera intresseområdet (ROI) roi = gray[y:y+h, x:x+w] # Utför OCR på ROI custom_config = r'--oem 3 --psm 6 outputbase digits' text = pytesseract.image_to_string(roi, config=custom_config) # Lägg till koordinaterna för begränsningsrektangeln och OCR-texten i datan data.append((x, y, w, h, text)) # Konvertera datan till en pandas DataFrame och spara som en CSV-fil df = pd.DataFrame(data, columns=['x', 'y', 'w', 'h', 'text']) df.to_csv('output.csv', index=False)