Filtrado de Correo Masivo no Deseado basado en técnicas de

Anuncio
)LOWUDGRGH&RUUHR0DVLYRQR'HVHDGREDVDGRHQWpFQLFDVGH
3URFHVDPLHQWRGHO/HQJXDMH1DWXUDO\$SUHQGL]DMH$XWRPiWLFR
Samuel Muñoz Caballero
Universidad Europea de Madrid
Villaviciosa de Odón
Madrid, España,
samuelmc@terra.es
Resumen
El gran crecimiento de Internet en los últimos
años ha propiciado el gran aumento del correo
masivo no solicitado. Dado que este es un
problema que afecta a varios aspectos del
funcionamiento de Internet, como su rapidez y
comodidad de funcionamiento, no hay duda de
que su resolución supondría beneficios claros.
Los intentos realizados hasta ahora no han
conseguido resolver el problema, por eso hay
que abordarlo con una nueva metodología. El
paradigma de resolución propuesto es la
utilización de una técnica de Procesado del
Lenguaje natural para indexar dos conjuntos de
mensajes de correo electrónico (UCE y no
UCE) que servirán para construir un conjunto
de entrenamiento para el algoritmo de
Aprendizaje Automático J48. El conocimiento
en forma de reglas que produce este es el que
se utilizará posteriormente para decidir si un
mensaje es UCE o no. Una vez obtenidas las
reglas, se traducirán al formato de las reglas
que utiliza el programa de procesamiento de
correo electrónica Procamail, de manera que
podamos actuar sobre los mensajes clasificados
como UCE. Esta actuación puede ser la
modificación de la cabecera, la separación del
mensaje en una carpeta determinada o incluso
su eliminación.
1
Introducción
En 1977 ya se enviaban más de 270 millones de
mensajes de correo electrónico al día. Si los
dividimos entre los aproximadamente 131
David Mora Hernández
Universidad Europea de Madrid
Villaviciosa de Odón
Madrid, España,
dav_mora@terra.es
Alvaro Gaviño González
Universidad Europea de Madrid
Villaviciosa de Odón
Madrid, España,
agavino@terra.es
millones de usuarios tenemos una media de 6
mensajes por usuario al día [MG99], de los
cuales una gran porcentaje pertenece a correo no
deseado. El problema del UCE (8QVROLFLWHG
&RPPHUFLDO (PDLO) o spam es bien conocido
por casi cualquier usuario de la red ya que todos
lo hemos tenido que sufrir en mayor o menor
medida alguna vez. Esta molesta práctica de
publicidad redunda en aspectos tan negativos
como la saturación de servidores, el atropello de
la sensibilidad personal o la manifiesta
incomodidad para los usuarios, así como la
posibilidad de que estos malgasten su tiempo en
la lectura de los mensajes para acabar
descubriendo que no les interesan. Si a esto
añadimos el hecho de que dichos usuarios
podrían ser empleados en sus horas de trabajo, la
pérdida ya no sólo se mediría en tiempo, sino
también en dinero.
El UCE es un problema serio que deteriora la
calidad de la red, que es necesario controlar y
tratar de solucionar. El UCE se ha convertido en
una práctica demasiado habitual de publicitar
negocios en la red cometiendo un atropello de
los derechos de los internautas [SchGar98].
¿Pero es realmente ilegal el UCE? Este es uno
de los principales problemas a los que se
enfrentan los países que luchan contra este
problema, porque al no existir una ley clara y
concisa sobre lo que es legal o ilegal en Internet,
no está claro como combatir este problema. Por
tanto, lo primero que se está tratando de
solucionar es encontrar una definición correcta
que no de lugar a duda sobre lo que es UCE y lo
que no lo es. El UCE es además costoso porque
produce pérdidas a los clientes que lo reciben,
que tienen que utilizar gran cantidad de tiempo
en descargar de sus servidores de correo
mensajes no solicitado. Así por ejemplo según
un estudio de la Comisión Europea, el flujo
cotidiano de mensajes electrónicos no
solicitados cuesta a los usuarios de correo
electrónico de Internet unos 9.300 millones de
dólares al año en todo el mundo. Unos 500
millones de avisos son enviados diariamente de
modo personalizado y bombardean a los
usuarios del correo electrónico [IR01]. Dicha
cantidad se ha calculado solamente respecto al
tiempo de conexión utilizado para leer y borrar
esos mensajes de propaganda. Por esta razón se
están tratando de buscar soluciones a nivel
mundial, como por ejemplo en EEUU que se
aprobó
la “8QVROLFLWHG &RPPHUFLDO
(OHFWURQLF 0DLO $FW RI ´ con la que se
legítima tanto a los usuarios particulares como a
los ISP a exigir hasta 50000 dólares si son
atacados por UCE, aunque esta medida no ha
satisfecho
a
la
“'LUHFW 0DUNHWLQJ
$VVRFLDWLRQ´ porque cree que se le deja a los
ISP demasiado margen para establecer sus
propias reglas. Aunque en España el problema
no llega a la magnitud de EEUU, los siguientes
datos indican que empieza a tomar fuerza [DO]:
•
El 68% de los usuarios de correo recibe
algún tipo de mensaje 8&( .
•
El usuario recibe una media de 2,2
mensajes 8&( cada semana .
•
La mayoría de los mensajes 8&( son
sobre rumores, sucesos y mensajes en
cadena .
)LJ
Por tanto no cabe duda de que la creación de un
filtro efectivo anti-UCE aportaría grandes
beneficios tanto a empresas como a particulares
hasta que se consigan crear leyes que defiendan
adecuadamente los derechos de los internautas.
2
Enfoque actual de filtrado
Para tener una visión global de las soluciones
actuales adoptadas para el filtrado de UCE
vamos clasificarlas según los siguientes
criterios:
a- Localización:
- Residentes en cliente: los mensajes son
clasificados una vez recibidos por el
destinatario final. Ej.: 'HDGOHWWHU
(especifico para Eudora).
KWWSZZZGHDGOHWWHUFRP
- Residentes en el servidor: los mensajes
son clasificados en el servidor de correo,
lo que permite, dado el caso, que el
cliente no tenga que descargar los
mensajes clasificados como UCE.
Ej.: 0DLO6KLHOG
http://www.mailshield.com
•
Al 64% de los usuarios les molesta el
8&(
•
La mayoría de los usuarios (86%) no
emplea ningún filtro para evitar el 8&(
ni solicita su baja (70%)
b- Técnica de filtrado:
- Lista blanca:
lista permisiva de
remitentes de correo.
- Lista negra: lista bloqueadora de
remitentes de correo.
Ej.: $QWL6SDP
KWWSZZZ[GHQHWDQWLVSDP
-Palabras clave: los mensajes que
contienen palabras de esta lista son
considerados UCE.
Ej.: &<%(56LWWHU$QWL6SDP
KWWSZZZVROLGRDNFRPDQWLVSDPS
JKWP
- Análisis de trafico: si un servidor detecta
el envío de miles de copias de un mismo
mensaje, lo considera UCE y lo bloquea
para que no sea propagado.
(M6HUYLFLRDQWL6SDPGH
KRWPDLO
http://www.hotmail.com
c- Forma de construcción:
- Manual: si las listas blancas o negras,
como las de palabras clave son
construidas a mano, su mantenimiento es
ineficiente y costoso.
(M&<%(56LWWHU$QWL6SDP
KWWSZZZVROLGRDNFRPDQWLVSDPS
JKWP
- Automática: el propio programa se
encarga de actualizar la manera en que
decide la clasificación como UCE o no
por lo que su actualización es mas
efectiva y son sensibles a los cambios en
el estilo de los UCE rápidamente.
(M$QWL6SDP
KWWSZZZ[GHQHWDQWLVSDP
La mayor parte de herramientas existentes para
el filtrado de UCE, ya sean residentes en el
servidor o en el cliente, están basadas en las
llamadas listas negras o blancas. Las listas
negras no son más que listas en las que se
incluyen direcciones de correo o dominios de los
que se sabe que no queremos recibir mensajes,
bloqueando por consiguiente los que vengan de
ellos. Las listas blancas funcionan de manera
complementaria, ya que son listas de las que
podemos estar tranquilos al recibir información.
También se utilizan las listas de palabras clave,
de manera que si determinadas palabras
aparecen en el asunto del mensaje, estos son
considerados UCE. Estos tres paradigmas de
resolución no han resultado suficientemente
eficaces debido a varias razones. En el caso de
las listas negras, la facilidad con la que los
programas de correo masivo pueden cambiar el
remitente del mensaje una y otra vez las hacen
casi inútiles ya que son muy difíciles de
mantener actualizadas. El problema de las listas
blancas es que bloquean en exceso (o clasifican
como UCE mensajes que no lo son) ya que no
podemos saber de que direcciones nuevas nos
podrían mandar mensajes con intenciones
legítimas. La tercera solución es igualmente
inefectiva ya que mediante la lista de palabras
clave los sistemas se limitan a catalogar como
UCE aquellos mensajes que contengan alguna
de estas palabras, sin tener en cuenta el contexto
en el que son utilizadas por el remitente. Al no
intentar comprender el contexto en el que son
utilizadas la palabras de la lista, los mensajes
acaban por ser mal clasificados; mensajes
legítimos como UCE y viceversa. Menos este
último, los métodos de resolución del problema
del UCE se basan en el análisis del contexto de
los mensajes (dirección de origen, de destino,
tamaño, miles de copias, ...) y no en el contenido
de estos (palabras que lo componen). Esto hace
que los generadores de correo masivo puedan
camuflar fácilmente sus mensajes de manera que
las herramientas actuales no los consideren
como UCE.
Además de lo anteriormente expuesto hay que
tener en cuenta que la inmensa mayoría de las
herramientas implementadas, lo están para
correo en ingles, por lo que un sistema que lo
hiciera para mensajes en español tendría un
impacto importante.
)LJ
.
Fig.
3.1
El gráfico ha sido extraído de
http://www.glreach.com/globstats/
y
hay
una
Hay que tener en cuenta que el español es el
cuarto idioma en número de acceso a la red El
segundo en importancia si consideramos que el
Chino y el Japonés son idiomas casi
exclusivamente hablados en los países de los que
provienen.
)LJ
(VTXHPDGHIXQFLRQDPLHQWR
UCE
Indexador
NO UCE
3
Filtrado de UCE basado en técnicas de
PLN y AA
La solución al problema del UCE es claramente
una tarea de Categorización de Textos [JG021].
La solución que se pretende aplicar pasa por la
combinación de dichas técnicas de la siguiente
manera: mediante la utilización de las
metodologías de PLN se construirá un índice de
las palabras contenidas tanto en la cabecera
como en el cuerpo de los mensajes. Esta
indexación se realiza sobre dos conjuntos de
mensajes clasificados previamente como UCE y
no UCE. Dichas indexaciones tienen como fin la
construcción de un archivo en formato .arff, que
servirá de entrada al algoritmo de aprendizaje
automático J48 contenido en el paquete de
software de Aprendizaje Máquina de la
universidad de Waikato [WK01]. Este algoritmo
es el equivalente del conocido C4.5
implementado en el paquete de software libre
WEKA1. Mediante esta técnica se pretende
descubrir patrones de contenido dentro de los
mensajes dada su idoneidad para el problema
que estamos tratando. Dichos patrones, generan
un árbol de decisión (directamente traducible a
reglas), serán la base del filtro a construir. Una
vez conseguidas las reglas, la construcción del
filtro se reducirá a la implementación de un
pequeño programa que traduzca el formato de
las reglas del J48 al formato de reglas de filtrado
de Procmail, siendo este el que modificará la
cabecera de los mensajes o los guardará en
carpetas separadas en el caso de que el mensaje
sea clasificado como UCE.
.arff
Traductor
Reglas
WEKA
(J48.part)
.procmailrc
PROCMAIL
Es evidente que la utilización del PLN y AA es
muy adecuada a la hora de combatir el UCE. Las
técnicas de PLN permiten combatir más
eficazmente el correo masivo no solicitado ya
que evita los problemas de las técnicas basadas
en el contexto de los mensajes. Debido a que
este método basa su clasificación directamente
en el contenido de los mensajes, estos no pueden
ser camuflados tan fácilmente mediante el
cambio del remitente o del contenido del asunto.
Además, la utilización del aprendizaje
automático permite que la clasificación como
UCE o no, se haga de manera precisa, y que el
mantenimiento del sistema sea muy sencillo.
)DVHVGHWUDEDMRGHOVLVWHPD
explicación mas detallada de este en el enlace
Sources and references de la propia página.
1 Accesible en http://www.cs.waikato.ac.nz/ml/weka
/LPSLH]DGHPHQVDMHV
Antes de pasar el contenido de los mensajes al
programa encargado de la indexación debemos
limpiar estos de manera que evitemos la
inclusión de palabras no relevantes en el índice.
El conjunto de las palabras a eliminar podría
estar formado tanto por las pertenecientes a
cualquier lista de parada típica, como por
direcciones IP, direcciones de correo electrónico
(normalmente inventadas por los programas de
correo masivo), etiquetas HTML, etc. Como
posible mejora del sistema habría que tener en
cuenta que la inclusión de código HTML (o
cualquier otro lenguaje de scripts) dentro de un
mensaje puede ser indicativo de que este es UCE
ya que normalmente estos mensajes buscan un
rápido impacto sobre el lector mediante la
utilización de fuentes de diferentes tamaños y
colores, animaciones, banners... Tambien habría
que pensar en la conveniencia o no de la
extracción de las raíces de las palabras que
componen los mensaje (mediante el algoritmo
Porter Stemmer2 por ejemplo) ya que esto podría
mejorar la precisión de las decisiones del filtro.
,QGH[DFLyQGHPHQVDMHV
El sistema que se pretende construir utilizará
como entrada una colección de mensajes,
clasificados como UCE o no de antemano, cuyo
contenido (palabras) será indexado mediante un
programa basado en técnicas de Procesamiento
del Lenguaje Natural. De esta manera se puede
tener una correlación de la importancia de las
palabras utilizadas (y sus combinaciones) por los
remitentes de UCE, y también de las palabras de
los mensajes que no lo son.
La fórmula utilizada para el calculo del peso de
cada una de las palabras dentro de un mensaje
es:
ZG Z
WI ³Z
ORJ Q
GI wdji: peso que del término i en el documento j
wi: peso del término i en la colección
dfi: número de documentos en que aparece el
término i
n: numero total de palabras del documento
De esta manera tenemos una construcción
uniforme sobre la que podremos trabajar de
manera más sencilla y estructurada. Aunque el
2 Algoritmo de extracción de posfijos de palabras en
ingles.
www.tartarus.org/~martin/PorterStemmer
programa que realiza la indexación calcula la
importancia de una palabra dentro de un mensaje
asignándola
un peso determinado, la
representación que posteriormente será utilizada
será binaria, es decir, solo se tendrá en cuenta si
la palabra en cuestión está o no está en un
mensaje determinado. Esto resultara de gran
ayuda en posibles mejoras del sistema. Teniendo
esto en cuenta, la representación final de un
mensaje será:
&
d j = (wd j1 , wd j 2 , ..., wd jm )
Donde wdjk = {1,0}
Esto se debe a que la herramienta que se va a
utilizar para el procesamiento final de los
mensajes es Procmail [PM02] Dicha herramienta
solo admite reglas del tipo: la palabra X
pertenece o no al contenido del mensaje. Debido
a esto el peso resulta irrelevante.
%~VTXHGDGHSDWURQHV
La segunda parte del sistema estaría compuesta
por el modulo de búsqueda de patrones. Este
subsistema se vería alimentado por el índice
construido como se explica en el apartado
anterior (archivo en formato .arff) y, mediante
técnicas de aprendizaje automático. También
podría tener en cuenta si el módulo anterior ha
detectado que el mensaje incluye código HTML
de manera notable. El algoritmo J48 del paquete
Weka que implementa el algoritmo de árboles de
decisión C4.5 utiliza un archivo de entrada (con
extensión .arff) que se corresponde con el los
archivos .names y .data de la herramienta C4.5.
Dentro de este archivo se especifican los
atributos del árbol de decisión (donde el último
de los cuales representa el valor objetivo) así
como las reglas compuestas por los atributos
anteriores que definen el
conjunto de
entrenamiento. Como este archivo lo genera
automáticamente el modulo indexador, lo único
que habría que hacer es cargarlo como conjunto
de entrenamiento para el Weka y aplicar el
algoritmo de AA que se desee (en nuestro caso
J48.part). Una vez entrenado habría que evaluar
si la clasificación de nuevos mensajes se hace
con un error suficientemente bajo. Si los
resultados de clasificación son satisfactorios
guardaremos el resultado del algoritmo en un
archivo de texto mediante la función habilitada
para ello de Weka. Una vez hecho esto solo
quedaría pasar el archivo guardado al traductor
de reglas para pasarlas al formato de Procmail.
También deberemos decidir la acción que debe
tomar Procmail en caso de que los mensajes
sean clasificados como UCE.
7UDGXFFLyQGHUHJODVGH-DOIRUPDWR
GH3URFPDLO
El último paso que debe realizar el sistema debe
ser la actuación directa sobre los mensajes de
manera que el usuario final pueda reconocer
fácilmente los mensajes que han sido
clasificados como UCE. Como se ha comentado
anteriormente la solución que se ha adoptado es
la utilización del programa Procmail. Este es un
programa de procesamiento de correo
electrónico que permite la definición de reglas
en un formato propio [MG99]. Cuando una de
las reglas es satisfecha por las características de
un mensaje, el programa permite varios tipos de
acciones sobre este. Las acciones que permite
hacer Procmail sobre un mensaje son tres
principalmente: guardarlo en una carpeta o
archivo (lo concatena al final de este), mandarlo
a un nuevo destinatario, o invocar a otro
programa. Esto ultimo permite una gran potencia
de procesado.
archivo procmailrc la acción a tomar por el
programa.
5
Funcionamiento del sistema
El funcionamiento del sistema sigue los
siguientes pasos:
1. Programa Indexador:
Disponemos de dos conjuntos de mensajes
(UCE y no UCE) separados en dos
directorios. Se seleccionan las ubicaciones
de dichos directorios desde el programa
indexador mediante los botones habilitados
para ello. Una vez hecho esto generamos un
índice para cada uno de ellos y por último se
presiona sobre el botón Generar .arff.
obteniendo así el archivo FiltroSpam.arff.
Para un buen funcionamiento del
clasificador deberemos intentar que el
conjunto de ejemplos que alimenta este
programa sea de una extensión considerable.
Además, cuanto más diverso sea el tipo de
ejemplos existentes dentro de estos
conjuntos más precisa será la clasificación.
Nuestro programa recoge el archivo de texto que
genera el Weka, lo limpia (se queda con la parte
en la que están definidas las reglas) y las traduce
de la siguiente manera:
WEKA
gana=t
AND mucho=t
AND dinero= t
AND empleo=f :Spam
PROCMAIL
3URJUDPD
WUDGXFWRU
:0:
*gana
*mucho
*dinero
Una vez traducida la parte correspondiente a las
palabras que deben o no deben estar dentro de
un mensaje para considerar este como UCE o
no, debemos incluir como última línea del
2. WEKA:
Desde el entorno grafico del Weka se
selecciona el archivo FiltroSpam.arff
generado anteriormente. Una vez abierto nos
vamos a la pestaña Classify Instantes donde
elegiremos el algoritmo de clasificación
J48.part. Para realizar la clasificación
utilizamos la opción Cross Validation con
10 Folds y presionamos en Start para que
genere el conjunto de reglas de decisión.
Para poder actuar sobre ellas las guardamos
en un archivo llamado reglas.txt
(YDOXDFLyQ
La efectividad de los sistemas de Categorización
de Texto se mide en términos del número de
decisiones correctas e incorrectas [JG02].
Se puede resumir la relación entre las
clasificaciones correctas e incorrectas realizadas
por el sistema en una tabla de confusión:
+
Tp
Fn
+
-
Fp
tn
Tp: Número de instancias clasificadas como UCE
que son UCE.
Tn: Número de instancias clasificadas como
NoUCE y son NoUCE
Fn: Número de instancias clasificadas como
noUCE y que realmente son UCE
Fp: Número de instancias clasificadas como UCE
y realmente no lo son.
Un ejemplo real del archivo de reglas.txt
generado por Weka es el siguiente:
PART decision list
-----------------linguist = t: NoSpam (88.0)
confer = f AND
tel = f AND
acquisi = f AND
deadlin = f AND
theori = f: Spam (76.0/1.0)
: NoSpam (41.0)
Vamos a definir como precisión la proporción de
instancias clasificadas correctamente dentro de
una categoría. Por otro lado el recall es la
proporción
de
instancias
clasificadas
correctamente en una categoría frente el total de
instancias de esa categoría. Sus formulas son:
U
=
WS
WS
+
IQ
S
=
WS
WS
+
IS
Una buena medida a tener en cuenta es la
función F1, que asigna la misma importancia
tanto al recall como a la precisión. Esta función
es calcula según la siguiente formula.
3. Programa Traductor:
Una vez realizados todos los pasos del
apartado anterior, se ejecuta el programa
traductor al que se le da como entrada el
archivo de texto generado anteriormente
(reglas.txt.). Estas reglas son traducidas al
formato de Procmail y guardadas en un
archivo llamado .procmailrc. Este es el
archivo que debe ser guardado en el
directorio home del usuario que quiera
utilizar el filtro de manera que procmail se
ejecute cada vez que el usuario reciba un
nuevo correo electrónico.
)
1=
2US
U + S
Un ejemplo del resultado obtenido por Weka
para un conjunto de mensajes es el siguiente:
=== Confusion Matrix ===
a
b
<-- classified as
73
2 |
a = Spam
5 125 |
b = NoSpam
La siguiente tabla da un detalle sobre el recall y
la precisión.
o ORchie [OR01]1. El resultado seguiría el
mismo proceso que hacía hasta ahora
=== Detailed Accuracy By Class ===
Es obvio que una mejora y mayor integración de
las interfaces de los programas que forman el
sistema influirían de manera positiva.
TP Rate
FP Rate
F-Measure
Class
0.973
0.038
0.954
Spam
0.962
0.027
0.973
NoSpam
Precision
Recall
0.936
0.973
0.984
0.962
&RQFOXVLRQHV\IXWXURWUDEDMR
Teniendo en cuenta que las herramientas
existentes hasta ahora no dan el servicio deseado
y que además no existen en español intentar
construir un sistema que solucione el problema
del UCE esta claramente justificado. No cabe
discutir que su resolución implicaría grandes
beneficios para los usuarios, pudiéndose pensar
incluso en su futura comercialización.
El dominio del problema es el perfecto para las
técnicas de PLN y Aprendizaje Automático por
lo que a priori se espera resolver el problema
con cierto grado de éxito.
Una vez sentadas las bases de cómo se va a
solucionar el problema el trabajo futuro pasa por
refinar el indexador (pudiéndose incluir en este
un modulo de tipo parser para limpiar los
mensajes) y recolectar un conjunto significativo
de mensajes
UCE y legitimo para el
entrenamiento del algoritmo de aprendizaje
automático.
Otro interesante campo de acción a tener en
cuenta para futuras ampliaciones es el
relacionado con aquellos mensajes que no están
escritos en un formato textual convencional. Nos
referimos con esto a los mensajes que son
generados en formato visual, y por lo tanto no
son procesables directamente por el indexador.
La solución de este problema no debería ser muy
compleja ya que bastaría con la construcción de
un primer modulo que detectaría la existencia de
contenido
no
procesable
textualmente
(imágenes, banners, archivos en flash, etc) a los
cuales habría que pasarles una herramienta
OCR. Hay varias alternativas de código libre
como pueden ser CLARA [CL01], JOCR [JO02]
1
Existen también programas para funcionamiento
bajo web como ([SHU9LVLRQ2&56HUYLFH :HE75 o 1DWLRQDO/LEUDU\RI0HGLFLQH
Referencias
[MG99] Removing the spam : Email processing and
filtering, Geoff Mulligan
Mulligan, Geoff 1958. Addison-Wesley, cop. 1999
[SchGar98] Stopping spam Alan Schwartz and
Simson Garfinkel
Schwartz, Alan 1970. Sebastopol, Calif. : O’Reilly,
cop. 1998
[WK01] The University of Wakaito, Machine
Learning Software in Java.
http://www.cs.waikato.ac.nz/ml/weka
[PM02] Home page of the procmail mail processing
and SmartList mailing list suites:
http://www.procmail.org
[IR01] “Spam bueno, Spam muerto”
Iñaki I. Rojo 3/5/2001
http://www.baquia.com/com/20010503/art00019.html
[JG02] “Evaluating Cost-Sensitive Unsolicited Bulk
E-mail Categorization”
Jose María Gomez Hidalgo, Dpto. de Inteligencia
Artificial, Universidad Europea – CEES.
http://www.esi.uem.es/~jmgomez
[JG021] Pagina de Jose María Gomez Hidalgo sobre
el filtrado de Spam :
http://www.esi.uem.es/~jmgomez/spam/index.html
[CL01] Clara OCR
OCR para sistemas que soporten la librería C y el
sistema de ventanas X (Unix). Licencia (GPL)
http://www.claraocr.org/
[JO02] GOCR/JOCR, Joerg Schulenburg
Programa OCR desarrollado bajo licencia publica
GNU
http://jocr.sourceforge.net/
[OR01] Modular Optical Character Recognition
software. Desarrollado por la Universidad de
Berkeley
http://http.cs.berkeley.edu/~fateman/kathey/ocrchie
.html
[DO] Plataforma de servicios gratuitos de
comunicación para grupos en Europa, y en lengua
española.
http://www.domeus.es/
Descargar