[Python] Error con PIL y py2exe

Iniciado por Carloswaldo, 17 Septiembre 2010, 01:07 AM

0 Miembros y 1 Visitante están viendo este tema.

Carloswaldo

Hola, he venido porque ya no se a qué hacer a este pequeño script que tengo en python, es algo simple, solo hago abro una imagen gif, le hago un resize y lo guardo como un .tif haciendo uso de la librería PIL

Código (python) [Seleccionar]
from PIL import Image
im_orig = Image.open('input-black.gif')
big = im_orig.resize((116, 56), Image.NEAREST)
big.save("input-NEAREST.tif")
image = Image.open('input-NEAREST.tif')


El código funciona perfecto cuando lo ejecuto con python, pero ahora que quiero convertirlo a .exe con py2exe y lo ejecuto me da este error.

Traceback (most recent call last):
  File "reccap.py", line 4, in <module>
  File "PIL\Image.pyc", line 1423, in save
KeyError: '.tif'


El error es en la línea de big.save y no tengo idea de por qué sale. ¿Alguien me echa una ayuda?

bizco


Carloswaldo

Gracias man, ahora ya no me sale ese error, el script ejecutándolo normalmente sigue funcionando bien, pero de nuevo cuando lo hago exe con python me da otro error.

Traceback (most recent call last):
 File "reccap.py", line 19, in <module>
 File "pytesser.pyc", line 31, in image_to_string
 File "pytesser.pyc", line 21, in call_tesseract
 File "subprocess.pyc", line 623, in __init__
 File "subprocess.pyc", line 833, in _execute_child
WindowsError: [Error 2] El sistema no puede encontrar el archivo especificado


La línea 19 ahora es esta (que también está en el anterior):

Código (python) [Seleccionar]
image = Image.open('input-NEAREST.tif')

bizco

probando el codigo del primer post no me da problema alguno, pon el codigo nuevo.

Carloswaldo

Claro, el programa completo es este:

Código (python) [Seleccionar]
from pytesser import *
from PIL import TiffImagePlugin
from PIL import Image
import os
img = Image.open('captcha.png')
img = img.convert("RGBA")
pixdata = img.load()
# Por cada pixel que no sea negro lo convertimos en blanco
for y in xrange(img.size[1]):
   for x in xrange(img.size[0]):
       if pixdata[x, y] != (0, 0, 0, 255):
           pixdata[x, y] = (255, 255, 255, 255)
img.save("input-black.gif", "GIF")
# Hacer la imagen mas grander (requerido para OCR)
im_orig = Image.open('input-black.gif')
big = im_orig.resize((116, 56), Image.NEAREST)
ext = ".tif"
big.save("input-NEAREST" + ext)
image = Image.open('input-NEAREST.tif')
captcha = image_to_string(image).split()[0]
print captcha


Lo he copiado de por ahí adaptándolo un poco. xD
Estoy probando esta librería: http://code.google.com/p/pytesser/

bizco

#5
ahora si :), este es el problema:

Citar
Dependencies:
============================================
pytesser.py   Main module for importing
util.py      Utility functions used by pytesser.py
errors.py   Interprets exceptions thrown by Tesseract
tesseract.exe   Executable called by pytesser.py
tessdata/   Resources used by tesseract.exe


si alguna dependencia fuese dinamica tendrias que especificarla explicitamente del mismo modo que con el plugintif, el exe y tessdata ponlo junto a tu ejecutable.

PD: te confirmo 100% ya que lo he bajado para ver que tal, y es por el tema del ejecutable.

Carloswaldo

PERFECTO!

Te agradezco todas las molestias que te has tomado. :)

Por cierto ¿Dónde viste las dependencias?

bizco


Carloswaldo

Nota mental: Leeré el readme xD Gracias de nuevo.