Está en la página 1de 27

Manual para ripear subtítulos de los

"hardsubs"
Con la nueva versión del SubRip
Introducción
Algunos videos tienen subtítulos "incrustados" en ellos. El SubRip puede ser utilizado para
extraer los subtítulos en formato de texto, y también para guardarlos como .bmps para
removerlos después. En esta guía en particular, vamos a aprender a extraer los subtítulos de
estos videos (el autor del subrip todavía está trabajando en la guía para usarlo como
removedor de subtítulos).

En estos casos, los subtítulos originales son parte de la imagen del video. No se pueden sacar
de ahí ni modificar. Lo que hace este manual es hacer una copia en formato de texto (y de
imagen también, si se activa) de los subtítulos.

Nota. Lo probé y funciona! pero es muy lento. Después de un rato de hacer el OCR en los
primeros 5 minutos de diálogos, me resultó mucho más rápido ponerlo en modo automático y
dejarlo hacer todo solo (y me fui a dormir), así extrajo los tiempos y una versión "rápida y
audaz" del texto. Cuando uno no tiene fuente de subtítulos en la que basar los tiempos, éste es
un método muy poco costoso para tenerlos. También extrae el texto en forma legible, aunque
por supuesto que con errores de OCR.

Edit: ahora que lo estuve probando más tengo que retractarme un poco de mi primera
impresión, el programa sí es rápido si uno lee las instrucciones con atención y usa todas las

opciones que tiene disponibles para ripear sus subtítulos de la forma más eficiente así
que no se acobarden porque no es difícil de usar y es mucho más divertido que andar
poniendo los tiempos a mano!

El programa es especialmente útil si tenemos varios ovas o capítulos de una misma serie
subtitulados de una misma manera, porque todo este procedimiento descripto más abajo, lo
tenemos que hacer una sola vez, y para el resto de los capítulos usamos la misma
configuración. Además se pueden guardar los resultados de los OCR así que el OCR hecho para
el capítulo 1 sirve también para el capítulo 2, por lo que una vez que superamos esa curva
inicial, vamos a ir cada vez más rápido.

Software necesario
- El Subrip, versión 1.3 o superior (yo usé la versión 1.50 beta3 y funciona). Para instalarlo, sólo
hay que extraer la carpeta, por ejemplo en C:/Archivos de Programa/SubRip Para ejecutarlo,
hacemos doble click en C:/Archivos de Programa/SubRip/SubRip.exe

- El Avisynth. Se puede descargar de aquí:


http://sourceforge.net/project/showfile ... p_id=57023
A diferencia de los programas "normales", este programa trabaja sin ser visto, en este caso
trabajará como intermediario entre el video y el subrip, descomprimiendo el video para que el
subrip pueda leerlo.

- Los codecs y/o filtros necesarios para abrir el video a ripear. Los codecs tienen que ser VFW
(Video for Windows), no Direct Show (los direct show son los que se usan normalmente para
ver el video en el reproductor, los VFW son los que usa por ejemplo el virtualdub). Como regla
general, si pueden abrir el video en el virtualdub, entonces el Avisynth -> Subrip también va a
poder hacerlo. Si no tienen los codecs, normalmente el ffdshow arregla todo :P, así que se lo
bajan e instalan, si todavía no pueden ver el video, es que tienen deshabilitados los codecs por
defecto, así que van a inicio > programas > ffdshow > VFW codec configuration > codecs > y en
la ventana que aparece, en la columna que dice "decoder", cambian todos los "disabled" por el
codec que tengan instalado.

- Si el video que quieren abrir es un DVD, necesitan también el DGMPGDec. SubRip creará un
archivo llamado temp.avs en ese directorio.

TIP. Hay que tener en cuenta que no todos los codecs y filtros tienen la habilidad de navegar
por el video hasta detenerse en una imagen arbitraria. Subrip ocasionalmente necesita ir un
frame hacia atrás en el video, cosa que el Avisynth puede manejar. Pero si ustedes ven que el
subrip está trabajando muy lento, prueben convertir primero el video a avi.
Procedimiento primera parte: Dando vida al mostro

1. Dando vida al mostro

Abrimos el subrip, abrimos el video clickeando el botón marcado con un círculo rojo, o
seleccionando en la barra de herramientas:
File > Open Hard Subbed Video files

SubRip tratará de abrir cualquier archivo que pueda ser abierto por Avisynth (avi, mpg,
ogm, mkv, mov, etc), pero al parecer solamente puede detectar el "framerate" de los
archivos .avi. Así que si abren otro tipo de archivo, SubRip les preguntará cuál es el
frame rate correcto:

Nota. Si no saben el framerate y tienen el virtualdub, abren el video con el virtualdub,


van a File > File information, y ahí lo van a encontrar.
Cuando el SubRip puede abrir exitosamente el video, se abre la ventana llamada Video
file viewer ("visor del archivo de video"), dentro de la cual encontramos nuestro video:

2. Buscamos una imagen con subtítulos

En esta parte trabajamos en la ventana del visor del video, el "video file viewer". En
este paso aprendemos a buscar en el video hasta encontrar una parte que muestre
subtítulos. Vamos a tratar de que sea la que más texto tenga (si hay subtítulos de hasta 3
líneas, busquen uno así, si hay subtítulos hasta de 2 líneas, busquen uno así).
Tienen dos formas de navegar en el video:
- ¿Ven la barra marcada en rojo? Úsenla para ir y venir en el video hasta encontrar una
parte con subtítulos.
- Otra forma de hacerlo es tocar el botón de "Play" y "Pause" (el mismo botón se
convierte de uno al otro al ser tocado) hasta que el video llega a una parte con subtítulos
con mucho texto.

3. Definimos el área subtitulada

Todavía estamos en la ventana de "video file viewer". El siguiente paso es definir el


rectángulo que encierra a los subtítulos. Para eso tocamos en el video con el botón
derecho del ratón y dejándolo apretado, lo arrastramos hasta la otra esquina. Podemos
volver a intentarlo cuantas veces sea necesario hasta que el rectángulo encierre a los
subtítulos y deje un buen espacio a derecha e izquierda para que entren en él los
subtítulos que ocupen un área mayor.

TIP. Una vez que hicieron eso, si les resulta más cómodo pueden modificar el tamaño
de la ventana para que ocupe menos espacio, y mostrar solamente la región de los
subtítulos como en la imagen de aquí abajo. Por las dudas dejen un poco de espacio
hacia arriba, por si aparecen subtítulos con más líneas.

TIP. Si cuando están procesando el video ven que en una parte el subtítulo tiene más
líneas que las que definieron, siempre pueden detener el proceso y redefinir el
rectángulo que encierra a los subtítulos como se indica en el paso 3, y luego, como el
color de los subtítulos es el mismo, pasamos directamente al paso 5, para ajustar los
valores de líneas.
Procedimiento segunda parte: Sobre colores y otras yerbas

4. Le explicamos al programa el color de nuestros subtítulos

El programa asume que el subtítulo tiene 2 colores, uno para el interior del subtítulo, y otro
para el borde del subtítulo. En esta imagen vemos la barra de herramientas del "video file
viewer", en donde marcamos en rojo la herramienta en que se definen los colores de mi
subtítulo:

Para cada color vemos 3 rectángulos, que corresponden de izquierda a derecha, al color más
oscuro, al color detectado, y al color más claro respectivamente.

Le explicamos al "video file viewer" de qué color son nuestros subtítulos así:

1 - ¿Se acuerdan del rectángulo que hicimos en el video para encerrar a nuestros subtítulos?
Algunos ya se habrán dado cuenta de que cuando pasamos el mouse dentro de nuestro
rectángulo, el cursor se convertirá en una cruz. También en ese momento aparece un texto
abajo, en la barra de explicaciones, que dice "click inside a letter to set text color" ("clickeen
dentro de una letra para definir el color de texto"). Si ya vieron eso, ya adivinaron lo que hay
que hacer, que es:

2 - Dentro del rectángulo, buscamos una letra y hacemos click con el botón izquierdo del
mouse dentro de ella. En teoría, nos quedará definido el color de texto, en el cuadro que está
marcado en rojo acá arriba. También al mismo tiempo, el bueno de Subrip habrá calculado el
ancho de caracter (cuántos píxeles hay con ese color, entre borde y borde). Las mejores letras
para hacer esto son las que tienen una línea vertical, como "L", "l", "d", "h", etc., así podemos
clickear cómodos dentro de la línea vertical.

3 - Justo después de tocar una vez, nos cambia el texto de la barra de explicaciones a "click on
an outline to set outline color more precisely" ("clickear en un borde para definir el color de
borde de forma más precisa"). Ya adivinaron: ahora tenemos que tocar con el botón izquierdo
del mouse, un borde de mis subtítulos.

4 - Los colores detectados en la barra de herramientas, deberían ser los que uno ve en la
ventana de video. Las cajitas de "width" ("ancho del caracter") típicamente deberían mostrar
valores entre 1 y 5 píxeles. Cualquier valor más alto que eso, probablemente signifique que la
detección no fue exitosa. Si los colores no coinciden o "width" es demasiado alto, buscamos
otra letra y lo intentamos de nuevo, siempre teniendo en cuenta que primero nos pide el color
de texto, segundo nos pide el color de borde.

Nota . Yo tengo la versión 1.5 beta3 del subrip y no sé si no me daba cuenta, pero a mí no me
aparecían los colores en la pantalla como en la imagen. Sin embargo cuando hacía doble click
en la barra de herramientas, en los cuadros de color de texto y de color de borde, sí me
aparecían definidos, y al procesar los reconocía, así que es un bug estético, sin importancia.

Nota. Una forma alternativa de ingresar los colores es a mano, para eso vamos a la barra de
herramientas, a la herramienta de los colores de texto y de borde, y hacemos doble click sobre
el rectángulo del medio de los rectángulos de color. Nos aparecerá una ventana con una paleta
de colores en la que podemos elegir nuestro color.

TIP. ¡Tengamos la máscara a la vista! Recordemos que hasta ahora tenemos abiertas 2
ventanas, la "video file viewer", que es donde estamos tomando los colores del subtítulo, y la
ventana del subrip, en la que, después de que elegimos colores, nos apareció mágicamente
una imagen que en la jerga de los ripeadores se llama "máscara". La máscara es una copia de la
imagen que aparece dentro del rectángulo de "video file viewer", pero con los colores
cambiados, los colores son puestos de esta forma:
- el texto del subtítulo en blanco
- el borde del subtítulo en rojo (si el subtítulo no tiene borde, va a aparecer un "falso borde" en
rojo)
- lo que no es subtítulo, en negro
- lo que tiene el color del texto pero quedó por afuera del texto y llega hasta el borde del
rectángulo que definimos, en verde (nota: esto lo dejamos de ver si des-clickeamos la opción
en la barra de herramientas del "video file viewer" que se llama "fill open areas", esta opción
viene marcada por defecto, así que si no tocamos nada vamos a ver lo verde).
Como se ve en esta imagen:

Vamos a ver que cuando modificamos los valores de los colores en "video file viewer", también
se nos van a modificar los de la máscara que apareció en la ventana del subrip. La forma más
precisa de saber si estamos eligiendo los colores correctos, es fijarnos en la ventana del subrip
si la máscara que apareció nos satisface.

5. Ajustemos el rango de tolerancia de cada color.

Una vez que elegimos color de texto y de borde con el mouse, el programa busca en cierto
rango de colores por defecto, tanto para el texto como para el borde. El problema está en que
si el programa busca en un rango de colores más amplio que los de los subtítulos, va a creer
que cada cosita blanca es un subtítulo blanco, por otro lado si el programa busca en un rango
muy acotado de colores y los subtítulos están "sucios" o comprimidos con artifactos, el
programa no los va a encontrar.
Si después de varios intentos de definir el color de texto y color de borde, todavía no estamos
satisfechos con el resultado que vemos en forma de máscara, quizás sea la hora de probar
modificando los valores en "advanced color options" ("opciones avanzadas de color"). Si sí
estamos satisfechos con el resultado, igual nos podemos dar un paseíto por esa herramienta,
porque es muy divertida :P La vamos a encontrar donde marca esta imagen:

Se nos va a abrir una ventanita como muestra la imagen, que tiene separadas las columnas
para los canales rojo, verde y azul, los valores de adentro se llaman "valores de tolerancia" y
van del 0 (nada de tolerancia, buscar el color exacto) a 255 (tolerancia extrema, buscar en todo
ese rango de color). Entonces:

TIP. - Si en la máscara que aparece en la ventana del subrip, el texto tiene líneas muy finitas en
comparación al texto del video, o si el texto aparece con "arruguitas", o si (en el caso extremo),
el texto del subtítulo no aparece, eso quiere decir que tenemos la tolerancia de "text" muy
baja. Probemos subiendo ese número, que por defecto es 50. Notemos que si tenemos
marcado el cuadrito de la derecha, al modificar el valor de una columna, modificamos los de las
3 columnas al mismo tiempo.

TIP. - ¿Cuándo conviene ajustar los canales rojo, verde y azul por separado? Por ejemplo en el
caso de estas capturas, en que el texto del subtítulo es blanco y el borde del subtítulo es azul,
nos pasa que el texto del subtítulo a veces tiene píxeles azulados cerca de los bordes, debido al
efecto de difuminado que hacen los codecs al comprimir el video. Esto quiere decir que para
tomar todo el texto tenemos que aumentar la tolerancia, pero como el borde es azul, no es
necesario aumentar la tolerancia en los 3 canales, solamente la vamos a aumentar en el canal
azul, y dejarla bajita en el verde y el rojo.
Procedimiento tercera parte: Acotemos nuestro subtítulo lo más que
podamos
6. Marquemos el "fill open and large areas".

En la ventana de "video file viewer" también vamos a encontrar estas dos cajitas para marcar
opcionalmente, se lee "Fill: () open () large areas".
- La cajita de "fill open areas" ("llenar los espacios abiertos") ya viene marcada por defecto, y
es la que produce que todo lo que tiene color de texto pero queda por afuera del borde, quede
marcado de verde.

- La que no viene marcada por defecto, es la cajita de "fill large areas" ("llenar los espacios
demasiado grandes"), el programa considera que "demasiado grande" es aquéllo que es 10
veces más alto o 10 veces más ancho que el caracter, siendo que definimos el tamaño del
caracter donde dice "Text widht". El programa las marca de color gris. Deberíamos marcar esta
cajita, porque esta cajita, lo que le dice al programa es "todo lo que tiene el color del subtítulo,
pero es demasiado grande para ser una letra, entonces no es subtítulo, lo dejamos afuera y lo
marcamos de gris". Si después de marcarlo, navegamos por el video y chequeamos las
máscaras, y vemos que hay "áreas demasiado grandes" que siguen marcadas de blanco en
lugar de gris, podemos probar bajar el "Text Widht" a ver si así las reconoce. Aquí tengo un
ejemplo de esa situación, la idea es que todo lo que no sea texto esté marcado en gris:

1. Marcamos "fill open and large areas"


2. Pero todavía vemos partes grandes en blanco, así que...
3. Bajamos el "text widht" (ancho del texto) para que sí encuentre las partes grandes y las
coloree de gris.
TIP1. Lo que no podían solucionar con el rango de colores de "advanced color options", se
soluciona mágicamente al marcar estas dos cajitas. Vayan a una parte del video donde muestre
los subtítulos en un fondo que sea del mismo color que ellos (por ejemplo texto blanco sobre
fondo blanco). Prueben marcar estas cajitas, y van a ver que ahora pueden bajar un poco los
rangos de tolerancia, ya que el tener estas cajitas marcadas previene que el programa
considere al fondo como subtítulo. En mi ejemplo, una vez que marqué esas cajitas, pude bajar
el rango de tolerancia de mi subtítulo de 60 a 49, de forma que la máscara que vieron en el
ejemplo anterior, después de hacer eso me quedó así:

Diferencia, eh?

7. Le explicamos al programa la posición de cada línea de subtítulo


Esta parte también es muy divertida (sí, yo me divierto con estas cosas). Eso sí, esta parte
solamente sirve si los subtítulos aparecen siempre en la misma posición en el video (lo que
suele ocurrir en realidad).
El siguiente paso en la detección de subtítulos es saber dónde se encuentra cada línea de texto.
Para eso, en la ventana de "video file viewer", en su barra de herramientas, clickeamos en el
botón que se muestra en esta imagen:

Es el botón de "show/hide inter-line options" ("mostrar o esconder opciones de entre-líneas").


En realidad por defecto el cuadro de opciones se muestra, pero podemos clickear el botón para
demostrarnos a nosotros mismos que sabemos esconderlo.
Una vez lo tenemos visible, vamos configurándolo en este orden:
1 - Marcamos la cajita de Draw lines on top ("Dibujar las líneas arriba de todo"). Así vamos a
ver en la máscara que está en la ventana del subrip, las líneas de texto que estamos a punto de
definir.
2 - Después, en Count, ponemos la cantidad de líneas de nuestros subtítulos (si nuestro
rectángulo tiene 2 líneas ponemos 2, si tiene 3 líneas ponemos 3).
3 - Ahora vamos a Top Line Offset ("límite de la línea superior"), ponemos cuántos píxeles hay
desde que nace nuestro rectángulo, hasta que aparece nuestro texto. Esto lo hacemos así:
primero ponemos 0, y entonces lo subimos a 1, y después a 2, así vamos subiendo de a un píxel
por vez, mientras miramos la máscara de subtítulo que hay en nuestra ventana del SubRip. En
cuanto en nuestra máscara de subtítulo nos aparecen las mayúsculas y las "l" de verde,
significa que nos pasamos de largo. Entonces nos fijamos qué número es, volvemos atrás un
número, y lo dejamos así.
4 - Ahora ajustamos el valor de Height ("altura"). El valor máximo es 45. Así que lo ponemos en
45, y vamos bajando de a uno por vez, siempre mirando en la máscara de la ventana del subrip,
la línea superior de mis subtítulos. Cuando lleguemos a un número de Height que nos haya
puesto las "g" y las "y" de verde, significa que nos pasamos de largo. Así que miramos ese
número, volvemos un número atrás, y lo dejamos así.
5 - Si tenemos más de una línea (que es lo que va a pasar por lo general), entonces ya es hora
de ajustar el valor de space ("espacio entre líneas"). Para eso aumentamos o disminuimos el
valor, hasta que veamos que nuestras líneas inferiores tienen todo su texto en blanco. Si mis
líneas inferiores tienen su texto "alto" en verde (las mayúsculas etc), tenemos que disminuir el
valor de "space". Si mis líneas inferiores tienen su texto "bajo" en verde (las "g" y eso),
entonces tenemos que aumentar el valor de "space". Háganlo hasta que todo el texto del
subtítulo aparezca de color blanco en la máscara.

Ahora aparecieron unas líneas azules en la parte superior de los subtítulos, en la parte inferior
de los subtítulos, y entre líneas. El resultado final debería verse como en la imagen:

Nota. Algunos se habrán dado cuenta de que a partir de ahora, el programa considera a todo lo
que toca a las líneas azules como "de afuera", así que toda la "basurita" que toque la línea del
medio, será pintada de verde. Si no lo ven, es que no hicieron el paso 6, háganlo ahora.

8. Llenamos los espacios a derecha e izquierda de los subtítulos

Una vez tenemos las líneas definidas, en el mismo cuadro de "inter-line options", podemos
marcar la opción "fill sides" ("llenar los costados"). Nos van a aparecer franjas violetas como en
la imagen:

Procedimiento cuarta parte: Ajustes finales.


9. Ajustamos el "text width". "outline color", "outline width".

text / outline color. Éste es el mejor momento para revisar los colores de texto y de borde de
nuestro subtítulo. Hacemos click en las cajitas de "color" y probamos bajar o subir
manualmente los colores de texto y de borde, hasta ver que la máscara nos quedó lo más
limpia posible.
El "Outline Color" o "color de borde" es usado para eliminar subtítulos falsos: solamente los
píxeles con el "Text Color" que estén lo suficientemente cerca de los píxeles del "Outline Color"
serán marcados como texto.
Como regla general, van a ver que lo mejor es hacer el color de texto un poco más blanco, y el
color de borde un poco más oscuro. Eso es porque cuando los capturamos con el cuentagotas,
los artifactos que se generaron durante la compresión "ensuciaron" el color, volviendo todo
más gris.
Siguiendo con mi ejemplo, después de ajustar los colores de texto y de borde, me quedó así:

text width. Los valores de "widht", además de ser usados para validación en el paso 3, limitan
cuánto busca SubRip en los alrededores de un pixel si hay más píxeles del mismo color.

Se supone que ya ajustamos el "text widht" al final del paso 6, pero aunque lo hayamos hecho,
éste es el mejor momento para volver a chequearlo, ya que ahora tenemos a nuestro subtítulo
mucho más acotado y con los colores corregidos.
outline width.El "Outline Width" (tamaño del borde) es el que decide cuántos píxeles a la
redonda el programa hará búsquedas de un borde. Si los subtítulos no tienen un borde,
simplemente des-chequeamos el "Use outline color" y ajustamos el "Text Width"
manualmente, después de verificar el que el color de texto en el rectángulo coloreado es el
correcto.

10. Hacemos un "fatten text".

"Fatten text" es otra forma sensata de arreglar nuestros problemas de letras finitas o
irregulares. Esta imagen muestra el resultado:

Fíjense que las letras se volvieron más gorditas. Esto ayudará mucho a que tengamos que
tipear poquitas veces cada caracter en la ventana de "New character" cuando hagamos el OCR.

Este proceso es controlado por el "Fatten Color Tolerance" en el panel de "Advanced Color
Options". Los valores para cada canal de colores (rojo, verde, azul) son relativos a los dos
extremos de colores que tengamos en el "color text". Lo que controlan es cuán diferente tiene
que ser un color del color determinado en "text color" para ser considerado parte del texto
cuando clickeamos el "fatten". los colores "Fatten" pueden ser imaginados como el color más
oscuro y el color más claro en los extremos del "Text Color". Si los subtítulos tienen borde, y el
borde tiene un color diferente del negro, asegúrense de que las tolerancias del "fatten" sean
más altas para ese color.
Recuerden que el objetivo de todo este proceso previo al ocr, es que solamente el texto
aparezca blanco en la máscara, y todo lo demás negro, así que no exageren tampoco con este
valor.

Mi ejemplo me quedó así:

11. Antes del ocr verifiquemos la calidad de nuestra máscara...

Ahora veamos un ejemplo muy malo de un subtítulo y cómo podemos arreglarlo (si a ustedes
no les pasa no hagan lo que dice acá!!):

Este caso es un caso especialmente malo, porque tiene objetos pequeñitos detrás del texto que
son del mismo color que él. La imagen que acaban de ver se capturó habiendo sacado la guía
del "Outline Color" (es decir,"Use outline color" no fue chequeado). En la próxima imagen
veremos qué es lo que pasa cuando el "Use outline color" sí está chequeado. Fíjense que hay
áreas blancas que NO son texto.

Este problema podría ser arreglado bajando los valores de "Text Color Tolerance" en "advanced
color options", pero eso podría llevarnos a ver letras muy finitas y con arruguitas, como
mostramos acá (será un problema cuando hagamos el ocr). Si el texto es demasiado finito, dos
partes del mismo caracter pueden aparecer como separadas en el ocr, o incluso caracteres
completos pueden ser pasados de largo si Options -> Advanced OCR Setup -> Character Setup
es pequeño. También, si los caracteres son irregulares, vamos a tener mucho más trabajo
tipeando el valor correcto muchas veces cuando hagamos el ocr.

Por eso si estamos en esa situación de letras finitas o irregulares (si no no), en lugar de bajar
tolerancias, debemos dejar el Text Color Tolerance más bien alto (>50), y el Text Width también
alto (>5), así todo el fondo es interpretado como texto, pero se vuelve muy grande y es pintado
de color gris, como se ve en la siguiente imagen.

El color no se "desborda" de las letras porque está el color de borde alrededor de ellas, pero
ojo que no siempre se da el caso de este ejemplo. También tienen que tener en cuenta que si
aumentan mucho el "text widht" va a hacer el procesamiento mucho más lento, porque la
exploración que tiene que hacer el programa alrededor de cada píxel es muy grande, así que
solamente usen esta combinación de configuraciones (widht altos, tolerancias altas) cuando
todo lo demás falla.
Procedimiento quinta parte: OCR.

11."Same sub tolerance".

A diferencia de las otras opciones, acá encontramos la primera opción que actúa en una escala
temporal, y no espacial.

Cuando el programa actúa, lo que hace con cada imagen es chequear si la nueva imagen de
nuestro video tiene subtítulos similares a la imagen anterior, y si es así, utiliza una sola máscara
para las dos imágenes. De esta forma cuando el programa termina con todas las imágenes,
idealmente tiene una sola máscara para cada subtítulo que apareció en la pantalla.

El "Same sub tolerance" es el que le dice al SubRip cuánta variación tiene que haber en las
máscaras de dos imágenes contiguas, para que el programa llegue a la conclusión de que ya no
es más el mismo subítulo, y que dé por terminado el subtítulo anterior y comience con una
máscara nueva.

Probablemente recién se dén cuenta de si este valor es el correcto una vez empiecen el OCR. Si
el programa ve el mismo subtítulo como dos subtítulos diferentes, sería hora de cambiar este
parámetro. Yo normalmente tuve que ponerlo un poco más alto que lo que viene por defecto.

12."Min. pixels".

Ésta es otra opción que es temporal y no espacial.

La opción "Min. pixels" le dice al SubRip qué cantidad de píxeles blancos tiene que encontrar
para que sean considerados subtítulo. Normalmente el programa va a considerar subtítulo algo
como esto:

Si ustedes ven que el programa cree que cualquier manchita blanca es subítulo, es hora de
cambiar los parámetros del "Min pixels". Normalmente tuve que poner un valor un poco más
alto que el que viene por defecto de esta opción.

13. Opciones.

Antes de hacer el OCR, una comprobación final que tenemos que hacer es en opciones >
opciones globales. Nos va a aparecer esta ventana:

Así es la configuración que yo uso, pero por supuesto que ustedes la ponen a su propio gusto.
Como esta ventana no está del todo traducida al español, les puse la traducción a los que les
cuesta el inglés.
Después van a opciones > configuración avanzada ocr y vamos a ver esta ventana:

Marqué en rojo los valores que yo suelo cambiar para que el OCR vaya más rápido, estos
valores varían según el tamaño del texto en el video a ripear, en mi caso los textos se suelen
ver "grandes" entonces estos tamaños los tengo que acomodar a mi tamaño de texto.
En particular les va a ser útil bajar un poco el valor que se llama "sensibilidad a las diferencias
entre caracteres", que está en 980, eso hace que uno tenga que tipear muchas veces la misma
letra porque el programa le encuentra pequeñas diferencias y cree que es una letra distinta,
tengan en cuenta que si su texto es "grande" como el de mi ejemplo, este valor hay que bajarlo
bastante, ya que mientras más grande es el texto, más píxeles hay que pueden variar dentro
del mismo caracter.
Pongan "guardar valores" para que el programa no los borre si lo cierran, siempre pueden
volver a la configuración por defecto tocando "cargar valores defecto".

14. Procesar el OCR.

ATENCIÓN: si éste no es su primer video con este texto, por ejemplo si están pasando por el
capítulo 2 de una serie y ya hicieron el OCR del capítulo 1, ¡No se olviden de cargar los
resultados del OCR anterior! Háganlo antes de empezar a procesar, para hacerlo van a
Matriz de caracteres > Abrir Matriz
Recuerden que las matrices de caracteres se guardan como mimatriz.sum

Cuando todo está listo, tocan el botón de "Rew." para ir al principio del video, después tocan el
"Run" para comenzar el OCR. Esta parte es igual a cuando tienen que hacer el OCR cuando
ripean un subtítulo de un DVD, nada más que como están "sucios", tienen que ingresar los
caracteres correctos más seguido.

TIP. si el programa va muy lento, toquen el botón de "abort" y después vayan a opciones >
prioridad y suban la prioridad. Entonces vuelvan atrás un subtítulo con "prev" y de nuevo tocan
"run" para retomar.

Durante el OCR:

- Pueden tocar Ctrl+Enter para llenar la duda con la "adivinanza" que hace el programa,
después Enter para aceptarla, o directamente tocar el botón de "Use" para hacer las dos cosas
en un solo paso.

- Pueden tocar Ctrl+Left y Ctrl+Right para que la selección de texto que hace el programa se
agrande o achique (para que se agrande el rectángulo de selección de caracteres, ese de color
rojo), eso lo tienen que hacer cuando el programa cree que un caracter son dos caracteres
distintos - por ejemplo, cuando una "O" es separada por el programa en un "(" y un ")", o lo
que me pasó a mí, una "K" separada en una "I" y un caracter que no podía reconocer y me
pedía que lo ingresara yo).

- Si presionan directamente "Enter" el programa va a considerar que en ese lugar no hay nada.
Tienen que hacer cuando el programa encuentra manchas blancas que no son texto, sino áreas
del fondo que tienen el mismo color del texto y que parecen texto que no lo son. De esta forma
le avisan al Subrip que tiene que ignorar todas las manchas que luzcan como la que ustedes
acaban de ignorar.
Si ustedes sienten que los subtítulos no están siendo detectados de la forma correcta, quizás
deban detener el proceso de detección y mejorar un poco los parámetros. Para eso tocan el
botón de "Pause/Abort" que van a encontrar en la ventana principal, modificar los parámetros
como les parezca, y tocar el botón de "Continue", esta parte también es igual a cuando
procesan subtítulos salidos del DVD. También pueden tocar el botón de "Prev." para ir a la
primera imagen del video en que apareció el último subtítulo detectado. Esto borrará el último
subtítulo de la ventana de subtítulos, y volverá a correr la detección de subítulos con los
nuevos parámetros. Diferentes razones por las que pueden abortar y ajustar los parámetros
antes de seguir:

TIP1 Si el mismo subtítulo aparece de nuevo como uno diferente, pueden tocar el botón de
"Same As Last" para decirle al SubRip que pase al siguiente subtítulo. Si un subtítulo se repite
muchas veces, quizás deban abortar y cambiar los parámetros, pueden
1- aumentar el "Same sub tolerance" que vimos en el punto 11,
2- o jugar con los valores de tolerancia de "Text", "Outline" y "Fatten".

TIP2 Si el video tiene esos subtítulos que aparecen gradualmente, ajusten el valor de "Skip first
value" a algún número más grande de 0, para saltear tantas imágenes antes de empezar a
compararlas entre sí. Una vez que el programa acumuló la cantidad de imágenes establecida en
"Min. duration frames", las siguientes imágenes serán comparadas con la máscara que formó el
programa con las imágenes acumuladas. Así acelerarán el procesamiento.
TIP3 El valor de "Update every" le dice a SubRip que rehaga el proceso de acumulación de
imágenes para formar una sola máscara, cada tantas imágenes. En el modo de acumulación,
los píxeles blancos de diferentes imágenes son puestos todos juntos, en cambio en el modo de
comparación, los píxeles blancos que están en una imagen pero no en la otra, son sustraídos de
la máscara. El modo de comparación es más rápido que el de acumulación, porque el único
proceso que se hace es el de fijarse si el color de cada pixel entra dento del rango de tolerancia,
pero puede fallar si un fondo tiene tooodo el mismo color del texto del subtítulo, entonces no
encuentra el sub. Si esta situación pasa muy seguido en un video, pongan el valor de "Update
every" a 1+menor duración, para asegurarse de que el modo de comparación no sea usado
nunca. Esto bajará mucho el tiempo de procesamiento porque el reconocimiento del texto es
más largo, así que úselo solamente si es necesario, de otra forma dejen el "Update every" en
30 frames o por ahí.

TIP4 Si les aparecen espacios indeseados en medio de las palabras: Aumentan la "Anchura de
los Espacios". Eso se hace en
opciones > configuración avanzada de OCR. > "Anchura de los Espacios: ... píxeles (como
mínimo) entre 2 caracteres consecutivos". El valor por defecto es 7, que está muy bien para la
mayoría de las películas, pero no es siempre así. Por ejemplo en la versión anime de Metropolis
(2001), el valor correcto era 12.
- Si por el contrario el programa se saltea espacios donde sí los hay: Disminuyen la "Anchura de
los Espacios". Eso se hace en
opciones > configuración avanzada de OCR. > "Anchura de los Espacios: ... píxeles (como
mínimo) entre 2 caracteres consecutivos". El valor por defecto es 7, que está muy bien para la
mayoría de las películas, pero no es siempre así. A veces es mejor bajarlo a 6.
15. Para el que se estaba preguntando sobre la remoción de subtítulos...

Si al hacer el OCR, dejan chequeada la opción de "Save", será guardado un mapa de bits blanco
y negro (en formato .pgm) por cada imagen, en el mapa de bits estarán sólo los caracteres que
fueron reconocidos (no los que pasamos de largo por ser "manchitas", como se puede ver en la
imagen de acá abajo). Los mapas de bits, en combinación con un archivo que los indexe,
pueden ser usados más tarde para remover esos mismos subtítulos del video en cuestión.

Ripping subtitles from video


files using SubRip Written by ai4spam. Last
modified on Friday, June 17, 2005 3:02 AM by ai4spam.
Please post your comments, suggestions and questions in the guestbook at the bottom of
this page.
Some video files have subtitles "burned into them". SubRip can be used to extract the
subtitles as text, as well as save them as bitmaps for later removal. This guide shows
you how to extract the subtitles.

Open the video file by clicking on the button encircled in red below, or selecting Open
Hard Subbed Video files from the File menu:

SubRip will try to open any file that AviSynth supports, but it can only detect the frame
rate of .avi files. If you open another kind of file, SubRip will ask you to input the frame
rate:

Please note that, in addition to AviSynth, you also need to have the appropriate codecs
and filters installed. For example, to open DVDs, you need DGMPGDec. SubRip
creates a file named "temp.avs" in its directory. The rule of thumb is: if you cannot play
that file in your favorite media player, then neither will SubRip be able to open it. Also,
some codecs and filters do not provide the ability to seek to an arbitrary frame.
Normally, SubRip only moves forward, but it occasionally needs to seek to the first
frame of a subtitle after changing the detection settings. AviSynth seems to have its own
buffering, but only between the previous and next keyframes. If you notice that seeking
is inaccurate in some particular video file, the best approach is to convert it to an .avi
file.

The Video file viewer window opens. Use the track bar or the edit box encircled in red
below to move to a frame where you can see subtitles. Alternatively, press the Play
button and let the video play, then Press the Pause button to stop the video when you see
a subtitle, preferably with two or more lines.
Right-click and drag to define a rectangle around the region where the subtitles appear.
Make it large enough so that it encloses the subtitles and has enough room on either side
for cases when the subtitles occupy a larger area. You can then resize the window to
take less space and show only the subtitle region as in the image below. Be careful for
cases when there are more lines in the subtitle. You can always stop processing and
redefine the region by right-clicking and dragging.
The area encircled in red above shows the Text and Outline Colors. The three colored
rectangles in each group show the darkest, detected, and lightest color respectively.
Move the coursor inside the rectangle defined earlier (the cursor cnanges into a cross).
Left-click INSIDE a character (its white area) so that SubRip can detect the Subtitle
Color and Width. Look at the area circled in red above to confirm: the detected colors
should match what you see in the video window. If not, click again inside another
character. Try one that has a vertical line, like "L", "l", "d", "h", etc., and click inside the
vertical line. The Width boxes should typically show values between 1 and 5 pixels.
Anything larger would probably mean that detection was unsuccessful. These values are
used for validation, and limit how far around a pixel SubRip searches for neighbors of a
similar color. You can also set or change the colors manually by clicking inside the
middle (larger) rectangles in the area encircled in red above.

If after several tries the detection still does not seem to work, press the button encircled
in red below to show the Advanced Color Options panel. Then, try lowering the Text
Color Tolerance values (the color of the outline may be too similar to the color of the
text). You can change the Tolerances for all color channels simultaneously (if the
checkboxes in the rightmost column are checked) or for each color channel individually.
For example, if the subtitles are white and the outlines are blue, you may want the color
tolerance in the blue channel to be larger, to compensate for the blurring caused by
compression. The Outline Color can be used to restrict false guesses: only pixels of the
Text Color that are close enough to pixels of the Outline Color are marked as text. The
size of the exploration window is the Outline Width value. If the subtitles do not have
an outline, simply uncheck the Use outline color checkbox and adjust the Text Width
value manually, after verifying that the text color in the colored rectangle looks correct.

In the main window, a rectangle the size of the selected region will appear, with the
subtitles in white and the outlines in red, as shown below. If the subtitles do not have
outlines, fake red outlines are added based on proximity to white areas. If the subtitles
do not show up properly (the lines are too thin, or irregular), try playing with the Text
and Outline Widths or increasing the Text Color Tolerance value. Ideally, even on a
bright background, you should only see the text in white in the main window. If large
bright areas also show up as white, try checking the fill open and large areas
checkboxes. Open areas include areas that touch the border of the rectangle, shown
below in green. Large areas are areas that are taller or wider than a character (10 times
the value in the Text Width field), shown below in gray. Note that the large areas on the
left are still white, because they are not large enough. You can try lowering the Text
Width value to compensate.

If the subtitles always appear at the same position during the video, press the button
encircled in red below to show the Inter-line Options panel. Check the Draw lines on
top checkbox. Leave the Fill sides checkbox unchecked for now.

Set the Line Count to how many lines of text there are in the subtitle. Next, adjust the
Top line offset so that the top blue line just about touches the top of the highest
character on the top line. If the Fill open areas checkbox is checked, areas that touch the
blue lines are also considered open, and will be filled with green, so you need to set the
Top line offset value so that all characters are still white. This helps eliminate false
guesses when the background behind the subtitles is white. Next, set the line Height so
that the second blue line just about touches the bottom of the lowest character on the
first line. Finally, set the Space value so that the bottom of the second blue line just
about touches the highest character of the second text line. The final result should look
like the image below. Note that the large areas on the left are now green, because they
are considered open areas, since they touch the blue line between the subtitles. Also, the
Line Height value set here will be used in the routine that fills large areas.

Finally, you may try checking the Fill sides checkbox in the Inter-line options panel.
Select the Text Alignment. This option tells SubRip to start from the left, middle, or
right, and fill the areas where it can't find white pixels close enough to other white text
areas with fuchsia. The final result should look like the following image:
This particular frame is a very bad case, because of the white objects behind the text.
The previous image was obtained without using the Outline Color as a guide (the Use
outline color checkbox was not checked). The next image shows what happens in this
frame when the Use outline color checkbox is checked. Notice that there are white areas
that are not text.

This problem can sometimes be solved by lowering the Text Color Tolerance values, but
that may lead to very thin or irregular characters, as shown below. This is a problem
because thin characters may become disjoint or may be skipped altogether if the values
in Options -> Advanced OCR Setup -> Character Setup are small. Also, irregular
("eaten by ants") characters will require you to type in the correct text a lot more
frequently.

Instead, by leaving the Text Color Tolerance values high (>50), and setting the Text
Width high also (>5), the entire background area is interpreted as text, but becomes
large and is filled with gray, as in shown the next image. The color does not "bleed" into
the letters because of the outline, but that is not always the case. Also, increasing the
Text Width value signifficantly slows down processing, because the exploration window
is larger, so only use this combination of settings when everything else fails.

Another way to deal with thin and irregular characters is to use the Fatten text feature.
The image below shows the result. Notice that the characters are thicker. This also helps
reduce the number of times you need to type a character in the New character(s)
window. The process is controlled by the Fatten Color Tolerance values in the Advanced
Color Options panel. The values for each color channel are relative to the darkest and
lightest Text Colors. They control how different a pixel's color can be from the Text
Color in that channel in order to still be considered for fattening. The darkest and
lightest Fatten Colors can be seen as colored rectangles right below the darkest and
lightest Text Colors. If the subtitles have outlines, these tolerances should be larger in
the color channels that have larger differences between the Text Color and the Outline
Color.
The purpose of this entire process is to make only the text show up as white in the
image. Several frames are then accumulated into a black and white image, and the other
colors are ignored. The Same sub tolerance value tells SubRip by how much the number
of detected white pixels should vary from frame to frame in order to conclude that the
subtitle has changed. The Min. pixels value tells SubRip what is the minimum number
of white pixels that need to be detected to trigger processing. The image that the OCR
process is run on looks like the one shown below:

When you are satisfied with the detection parameters, press the Rew. button to go to the
start of the video, then the Run button to start the OCR process. The OCR will be
similar to what you see when ripping subtitles from DVDs. You can press Ctrl+Enter to
fill in the Best Guess, then Enter to accept it, or press the Use button to do both in one
step. You can press Ctrl+Left and Ctrl+Right to grow or shrink the text selection (the
characters in the red selection rectangle) when you encounter disjoint characters - for
example, when an "O" is split into "(" and ")". Also, just press Enter for white spots -
background areas detected as subtitles such as the one in the red selection rectangle in
the image above. This way, you are in fact telling SubRip to ignore similar looking
white spots.
If at any time you see that the subtitles are no longer detected correctly, you may need to
change the detection parameters. Press the Pause/Abort button in the main window,
change them, then press the Continue button, just as when processing DVD subtitles.
You may also press the Prev. button to go the first frame of the last subtitle in the video.
This will erase the last subtitle from the text window, and re-run the detection with the
new detection parameters.

If the same subtitle shows up more than once, you may continue to fill in the characters
to train the OCR (exact duplicates will be detected and joined automatically), or you can
press the Same As Last button to tell SubRip to go to the next subtitle. If a subtitle is
repeated many times, you may need to modify the settings, either by increasing the
Same sub tolerance value or by tweaking the Text, Outline and Fatten Tolerance values.
If the subtitles appear gradually, set the Skip first value to some number greater than 0
to skip that many frames before starting to accumulate frames. After Min. duration
frames are accumulated, the next frames are just compared with the accumulated image.
This speeds up the detection process. The Update every value tells SubRip to redo the
accumulation process every that many frames. In accumulate mode, white pixels from
different frames are ORed together (added), and in compare mode, white pixels from
different frames are ANDed together (subtracted). Comparison is faster than
accumulation, because no other processing is done besides thresholding color values,
but may fail to detect when subtitles disappear if the background is entirely white. If this
situation is encountered often in a video, just set the Update every value to 1+Min.
duration to ensure that the compare mode is never used. This will slow down the
recognition, so only use it if needed, otherwise leave the Update every value at 30
frames or so.

If you check the Save checkbox, a back and white bitmap (.pgm) file will be saved for
each frame, containing only the characters that were recognized. The areas that were
skipped (by pressing Enter in the New character(s) window for a NULL character) are
not marked: notice that the white spots on the left side of the previous image are no
longer present in the image below. The bitmaps, in combination with an index file, can
be used later for subtitle removal.

También podría gustarte