Python: cesta k souboru

fdsssd

Python: cesta k souboru
« kdy: 09. 10. 2018, 10:55:06 »
Dobry den.
Pisem si maly program ale trosku som sa zasekol na spravnej ceste k suboru. Toto je moj kod ale stale to konci chybou

Kód: [Vybrat]
fp = builtins.open(filename, "rb")
OSError: [Errno 22] Invalid argument: 'C:\test\test.jpg'

skusal som rozne ine variace ako napriklad
Kód: [Vybrat]
img = Image.open('C:\test\test.jpeg','r')
Kód: [Vybrat]
from PIL import Image
import os
from pytesseract import image_to_string


folder = os.path.join( "C:\test\test.jpg" )
img = Image.open(folder)
text =image_to_string(img, lang='eng')

print (text)

neviete niekto poradit preco to nefunguje? Prosteredie Windows 7 python 3.7.0
Dakujem
« Poslední změna: 09. 10. 2018, 11:04:35 od Petr Krčmář »


kate

Re:Python: cesta k souboru
« Odpověď #1 kdy: 09. 10. 2018, 11:12:50 »
'\' je escape znak, který ovlivňuje symbol za ním. Třeba v 'ahoj\nsvěte' je \n znakem nového řádku. A \t je tabulátor :)
Pokud chceš zapsat cestu takhle, sice je to hodně „špinavé“ řešení, ale jde to stylem
Kód: [Vybrat]
img = Image.open(r'C:\test\test.jpeg','r')(r říká že string se má zpracovávat tak jak je)

os.path.join je mnohem lepší způsob, protože sestaví cestu v závislosti na operačním systému.
Tvoje použití je ovšem špatně, v podstatě to funkčně degraduješ na kopírování stringu.

Správně je to:
Kód: [Vybrat]
os.path.join('c:', 'test', 'test.jpg')
« Poslední změna: 09. 10. 2018, 11:14:56 od kate »

fdsssd

Re:Python: cesta k souboru
« Odpověď #2 kdy: 09. 10. 2018, 11:53:31 »
Kate:
kod
Kód: [Vybrat]
folder = os.path.join('c:', 'test', 'test.jpg')vracia
Kód: [Vybrat]
FileNotFoundError: [Errno 2] No such file or directory: 'c:test\\test.jpg'kod
Kód: [Vybrat]
img = Image.open(r'C:\test\test.jpeg','r')vracia
Kód: [Vybrat]
FileNotFoundError: [Errno 2] No such file or directory: 'C:\\test\\test.jpeg'kod
Kód: [Vybrat]
img = Image.open('C:\test\test.jpeg','r')vracia
Kód: [Vybrat]
   fp = builtins.open(filename, "rb")
OSError: [Errno 22] Invalid argument: 'C:\test\test.jpeg'

kate

Re:Python: cesta k souboru
« Odpověď #3 kdy: 09. 10. 2018, 12:11:13 »
Ach jo, cesty na Windows :/
Teď mě napadlo, on je to vlastně python 3, tam už je lepší použít pathlib. Pil s pathlib objektama umí.

https://realpython.com/python-pathlib/

Konkrétně
https://realpython.com/python-pathlib/#paths-as-proper-objects

pb

Re:Python: cesta k souboru
« Odpověď #4 kdy: 09. 10. 2018, 12:27:20 »
Jednou tam máte jpeg a podruhé jpg. Jaký soubor tak skutečně je?


Kód: [Vybrat]
   fp = builtins.open(filename, "rb")
OSError: [Errno 22] Invalid argument: 'C:\test\test.jpeg'

Pozor, builtins se nepoužívá. Voláte normálně
Kód: [Vybrat]
open('c:/test/test.jpeg', 'rb')




pb

Re:Python: cesta k souboru
« Odpověď #5 kdy: 09. 10. 2018, 12:28:11 »
Pozor, builtins se nepoužívá. Voláte normálně
Kód: [Vybrat]
open('c:/test/test.jpeg', 'rb')
Aha, jasně. Moje chyba.

fdsssd

Re:Python: cesta k souboru
« Odpověď #6 kdy: 09. 10. 2018, 12:35:06 »
No neviem ci dobre ale vyriesil som to takto.

Kód: [Vybrat]
from PIL import Image
import os
from pytesseract import image_to_string
import pathlib

path = pathlib.Path.cwd() / 'test.jpg'


img = Image.open(path)
text =image_to_string(img, lang='eng')

print (text)

.

Re:Python: cesta k souboru
« Odpověď #7 kdy: 09. 10. 2018, 14:35:41 »
Když si tady čtu dotazy, tak občas přemýšlím, zda ti, co je pokládají, umí číst. Nebo mají aspoň elementární základy angličtiny.

1. OSError: [Errno 22] Invalid argument: 'C:\test\test.jpeg'
Invalid argument znamená, že jste zadal špatný parametr, tady konkrétně to, že obsahuje znak backslash bez oštření (viz odpověď Kate)

2. FileNotFoundError: [Errno 2] No such file or directory: 'C:\\test\\test.jpeg'
No such file or directory česky znamená, že soubor nebo adresář neexistuje. Ve svém původním dotazu jste to popletl, jednou jste uvedl příponu .jpg, podruhé .jpeg. Zjevně je správně to .jpg. Zadání parametru je tady správně, jen má špatnou hodnotu, měl být: 'C:\\test\\test.jpg'.

fdsssd

Re:Python: cesta k souboru
« Odpověď #8 kdy: 09. 10. 2018, 15:25:44 »
Takze pokrocil som do dalsieho stadia

Kód: [Vybrat]
from PIL import Image
import os
import cv2
from pytesseract import image_to_string
import pytesseract
import pathlib

# Config for Tesseract
config = ('-l eng --oem 1 --psm 3')

image = cv2.imread('test2.jpg')
cropped = image[575:636, 440:640]
gray = cv2.cvtColor(cropped, cv2.COLOR_BGR2GRAY)
# Show after the gray
cv2.imshow("Image", gray)
cv2.imwrite("test2.png", gray)

# look for text
text = pytesseract.image_to_string(gray, config=config)
# Print result
print (text)

Obrazok ako vstup
Kód: [Vybrat]
https://www.learnopencv.com/wp-content/uploads/2018/06/road-sign-3.jpg

Neviem preco script zbehne ulozi obrazok po uprave ale nic nenacita resp vystup nie su ziadne data.

eee

Re:Python: cesta k souboru
« Odpověď #9 kdy: 09. 10. 2018, 17:01:18 »
Takze pokrocil som do dalsieho stadia

Kód: [Vybrat]
from PIL import Image
import os
import cv2
from pytesseract import image_to_string
import pytesseract
import pathlib

# Config for Tesseract
config = ('-l eng --oem 1 --psm 3')

image = cv2.imread('test2.jpg')
cropped = image[575:636, 440:640]
gray = cv2.cvtColor(cropped, cv2.COLOR_BGR2GRAY)
# Show after the gray
cv2.imshow("Image", gray)
cv2.imwrite("test2.png", gray)

# look for text
text = pytesseract.image_to_string(gray, config=config)
# Print result
print (text)

Obrazok ako vstup
Kód: [Vybrat]
https://www.learnopencv.com/wp-content/uploads/2018/06/road-sign-3.jpg

Neviem preco script zbehne ulozi obrazok po uprave ale nic nenacita resp vystup nie su ziadne data.

Tohle je naprostý bordel a chaos. Chápeš co vůbšc děláš a jak to funguje?
1) importuješ Image a nikde ho nepoužíváš
2) importuješ os a nikde ho nepoužíváš
3) importuješ image_to_string a nikde ho nepoužíváš
4) importuješ pathlib a nikde ho nepoužíváš
5) co znamená 'zbehne'?
6) co znamena ze obrazek obrazek ulozi po uprave, ale nic nenacita
7) co myslis tim vystupem, prikaz print?

Imho jsi uplne mimo a nemas dostatecnou inteligenci na programovani. Takze predpíkladam, ze chyba je proste v tom, ze nacitas neexistujici obrazek.


fdsssd

Re:Python: cesta k souboru
« Odpověď #10 kdy: 10. 10. 2018, 09:55:11 »
eee : si proste pan co k tomu dodat :) To vies niekto sa len uci niekto to ma len ako hoby a chyby sa stavaju :) Inak chcel by som teba vydiet vymenit a zrepasovat prevodovku asi by si bol mimo aj ty, ale na druhej strane to trosku vypoveda o tvojej povahe. (Dostalo sa hov*o na stvol a mysli si ze je torta) Resp. nepovedat nic podstatne ale okomentovat :) Dobre dost bolo srandy.
)
Obrazky ktore pouzivam resp. je to vystup po crop ,gray a saturacii textu.
https://imgur.com/a/t5tfyXy

Kód: [Vybrat]
from PIL import Image
import cv2
from pytesseract import image_to_string
import pytesseract
import numpy as np

# Config for Tesseract
config = ('-l eng --oem 3 --psm 150')

#cv2.IMREAD_COLOR = 1 , Loads a color image. Any transparency of image will be neglected. It is the default flag.
#cv2.IMREAD_GRAYSCALE = 0 , Loads image in grayscale mode
#cv2.IMREAD_UNCHANGED = -1 , Loads image as such including alpha channel
image = cv2.imread('test.jpg', 1)
cropped = image[595:626, 470:555]
#gray = cv2.cvtColor(cropped, cv2.COLOR_BGR2GRAY)
gray = cv2.cvtColor(cropped, cv2.COLOR_BGR2GRAY)
ret1, thresh1 = cv2.threshold( gray, 65, 255, cv2.THRESH_BINARY )
cropped[ thresh1 == 0 ] = 255

# Show after the gray
cv2.imshow("Image", gray)
cv2.imwrite('messigray.png',gray)
# next saturation
saturation = cv2.cvtColor(cropped,cv2.COLOR_BGR2GRAY)
ret, thresh = cv2.threshold(saturation,0,255,cv2.THRESH_BINARY_INV+cv2.THRESH_OTSU)
cv2.imshow('saturation',saturation)
cv2.imwrite('messisat.png',saturation)
# look for text
cropped_text = pytesseract.image_to_string(cropped, config=config)
gray_text = pytesseract.image_to_string(gray, config=config)
saturation_text = pytesseract.image_to_string(saturation, config=config)

# Print result
print ("Cropped Text")
print (cropped_text)
print ("Gray Text")
print (gray_text)
print ("Saturation Text")
print (saturation_text)


 

Podla mna su tie vysledne obrazky lahko citatelne ale vyhadzuje to hodnoty ako
Cropped Text
15a:
Gray Text
15a:
Saturation Text
15a:

a nerozumiem tomu preco tesseract nevie normalne precitat tie cislice. Skusal som normalny text to nie je problem. Digitalne cislice asi ano neviem

m

Re:Python: cesta k souboru
« Odpověď #11 kdy: 10. 10. 2018, 16:54:00 »
'\' je escape znak, který ovlivňuje symbol za ním. Třeba v 'ahoj\nsvěte' je \n znakem nového řádku. A \t je tabulátor :)
Pokud chceš zapsat cestu takhle, sice je to hodně „špinavé“ řešení, ale jde to stylem
Kód: [Vybrat]
img = Image.open(r'C:\test\test.jpeg','r')(r říká že string se má zpracovávat tak jak je)

os.path.join je mnohem lepší způsob, protože sestaví cestu v závislosti na operačním systému.
Tvoje použití je ovšem špatně, v podstatě to funkčně degraduješ na kopírování stringu.

Správně je to:
Kód: [Vybrat]
os.path.join('c:', 'test', 'test.jpg')

Ne, na python 3.6+ neni. Daleko lepsi napad je pouzit pathlib modul

JardaMira

Re:Python: cesta k souboru
« Odpověď #12 kdy: 10. 10. 2018, 23:03:04 »
Zkusils na rozeznavani ssocr ? Na githubu je rada forku, funguje dobre, kdyz se naladi.