Carga de imágenes: soporte para API de reconocimiento de imágenes

A la luz de las leyes SESTA/FOSTA, que efectivamente eliminan muchas protecciones para los administradores de sitios web sociales, foros o con contenido generado por usuarios (puerto seguro de la Sección 230), haciendo responsables a los administradores por lo que hacen sus usuarios.

Podría ser prudente apoyar el uso de una API de reconocimiento de imágenes como una solución para mejorar la protección. Con el fin de automatizar el bloqueo de cargas de contenido explícito como (inseguro, desnudez, violencia gráfica, etc.).

También mejorar la protección contra explotaciones como la carga de imágenes inapropiadas en borradores y luego enlazar directamente a esas imágenes en otros lugares, utilizándolas como alojamiento de imágenes anónimo y gratuito. No estoy seguro de qué tan explotable es esto con Discourse, pero parece que, con la configuración predeterminada, podría ser explotable durante 180 días después de la creación del borrador sin que el administrador sepa qué se ha cargado (eliminar borradores con más de n días).

Algunas APIs:

4 Me gusta

Esto tendría que empezar con un plugin, es poco probable que llegue a ser una función central de Discourse.

8 Me gusta

Sería genial verificar todas las imágenes subidas a Discourse mediante la API de Google Cloud Vision para mantener la seguridad con Adsense. Lo hicimos en nuestro sitio web anterior y nunca se subieron imágenes de desnudos ni de violencia gráfica.

Google proporciona una Ruby Gem:

Un plugin potencial debería integrarse en el proceso principal de subida de imágenes de Discourse para todas las imágenes (publicaciones, avatares, fondos de perfil, etc.) y rechazar las imágenes que contengan contenido no permitido:

  puts "Adult:    #{safe_search.adult}"  puts "Spoof:    #{safe_search.spoof}"  puts "Medical:  #{safe_search.medical}"  puts "Violence: #{safe_search.violence}"  puts "Racy:     #{safe_search.racy}"
['UNKNOWN', 'VERY_UNLIKELY', 'UNLIKELY',        'POSSIBLE', 'LIKELY', 'VERY_LIKELY']

¿En qué parte del código base de Discourse debería integrarse un plugin de este tipo?

¿Hay alguien interesado en desarrollarlo a través de Marketplace?

2 Me gusta

Esto es absolutamente posible, pero, en mi opinión, restaría la fluidez a la experiencia. Si hubiera alguna forma de integrar el modelo en el complemento, sería genial.

¿Usaron la propia API de Vision?

Aquí hay un complemento creado por @angus que puede servir como punto de partida. GitHub - angusmcleod/discourse-machine-learning · GitHub

2 Me gusta

¿Qué significa exactamente “fluidez”?

1 me gusta

Quiero decir, ¿antes de subir, verificar la imagen enviándola mediante POST a la API y recibir una bandera verde tomaría cierto tiempo, verdad?

1 me gusta

Bueno, el proceso de carga de imágenes en línea ya es asíncrono, en mi opinión. Además, la API de Google es muy rápida.

Por otro lado, también estaría encantado de revisar las imágenes después de que un usuario haya publicado una nueva entrada mediante un webhook externo (API de Discourse) y modificar la publicación del usuario (por ejemplo, cambiar la imagen y reemplazarla con el texto “IMAGEN ELIMINADA POR EL ADMINISTRADOR”). Esa parte parece posible con la API, pero no encuentro ninguna referencia sobre cómo eliminar realmente la imagen “mala” mediante la API en tal caso, porque ni siquiera quiero conservarla en algún lugar en la sombra.

2 Me gusta

Estoy encantado de trabajar en esto como un servicio remunerado. ¿Podrías ayudarme con el lado de la API, es decir, qué API se utiliza para detectar contenido ofensivo, etc.?

Todo está muy bien documentado aquí para Ruby:

En PHP lo implementamos en Drupal en menos de 2 horas.

3 Me gusta

2 horas deberían ser aceptables para esto. ¿Debería enviarte un mensaje privado al respecto?

3 Me gusta

Sí, por favor. Eso sería genial.

1 me gusta

@Terrapop - Algo que podrías tener en cuenta es la precisión del reconocimiento. Puede ser útil poder ver parte del contenido bloqueado para asegurarte de que no esté configurado demasiado estricto en términos de ‘POSSIBLE’, ‘LIKELY’ y ‘VERY_LIKELY’. Los falsos positivos y negativos son bastante comunes.

Creo que sería una implementación mejor enviar cualquier publicación que incluya imágenes por encima de cierto nivel ‘posiblemente adulto’ a la cola de revisión. De esta forma, la publicación nunca será pública, pero aún así podrás aprobarla si el reconocimiento no fue preciso. Si se rechaza desde allí, las imágenes se eliminarán, creo que después de un período de tiempo según lo establecido en ‘clean_orphan_uploads_grace_period_hours’.

Esto permitiría utilizar el nivel de detección ‘POSSIBLY’ con mayor confianza.

2 Me gusta

Hemos probado la API en nuestro sitio web actual y sabemos qué niveles funcionan bastante bien para nosotros.

@fzngagan está desarrollando el plugin para nosotros como código abierto; por lo tanto, una vez finalizado, podrás modificarlo y enviar una solicitud de incorporación (pull request) para incluir una opción que no rechace directamente, sino que reenvíe a la cola de moderación.

3 Me gusta

Aquí está el plugin.

Me encanta la idea de vincular la probabilidad a las colas de revisión cuando la imagen forma parte de la publicación. Estoy encantado de aceptar patrocinio o PR en ese sentido. :slight_smile:

5 Me gusta

Si eso es opcional como un añadido adicional, por supuesto, me parece bien.

Utilizamos la API en nuestra antigua comunidad durante bastante tiempo y conocemos los niveles aceptables para nosotros. Y la mayoría de las veces, la API tenía razón al denegar, y el usuario simplemente subía una imagen menos grave en su lugar.

También quería que no solo se revisaran las publicaciones, sino también las imágenes de carga de avatares y fondos de perfil. ¿No sabes si es posible una opción de cola para esos casos también?

2 Me gusta