¿Qué lenguaje?, el que prefieras que esté capacitado para el desarrollo iOS.
Por ejemplo, C# o VB.Net, utilizando Xamarin + Visual Studio para extender las capacidades de éste al desarrollo de aplicaciones para Android (aunque no necesitas VS, pero bueno, es lo que a mi me gusta).
¿Complicado?, pues depende, si no existen herramientas avanzadas para el lenguaje que escojas entonces significa que deberías desarrollar por ti mismo el algoritmo OCR, por ende... una completa locura.
En este caso, en la plataforma .Net, existen muchas herramientas (al igual que para C++ y Java por ejemplo, son lenguajes muy demandados y explotados, librerías inteligenes de OCR debe haberlas, pero las desconozco)
yo creo que librerías ocr listas deben haber bastantes, pero no creo que sea tan simple
Para .Net conozco varias librerías pero la que considero más útil es la librería de pago
Aspose.OCR de
Aspose.Net (es un conjunto de librerías), además de ser sencilla de utilizar, es bastante "lista", se puede aplicar distintas configuraciones de reconocimiento de idioma y se le puede "entrenar".
La he utilizado poco en el pasado pero guardé un ejemplo de uso, lo comparto por si sirve para esta duda:
Imports Aspose.OCR
Public Class Form1
Private Sub Form1_Shown() Handles MyBase.Shown
' Resource file
Dim resourceFilePath As String = IO.Path.GetFullPath("C:\Aspose.OCR.Resources.zip")
' Source file: the file on which OCR will be performed
Dim imageFile As String = "C:\Sampleocr.bmp"
Console.WriteLine("Performing OCR on " & imageFile & "....")
' Initialize OcrEngine
Dim ocr As New OcrEngine()
' Set the image
ocr.Image = ImageStream.FromFile(imageFile)
' Add language
ocr.Languages.AddLanguage(Language.Load("english"))
' Load the resource file
ocr.Resource = New IO.FileStream(resourceFilePath, IO.FileMode.Open)
Try
' Process the whole image
If ocr.Process() Then
' Get the complete recognized text found from the image
Console.WriteLine("Text recognized: " & ocr.Text.ToString())
IO.
File.
WriteAllText("C:\Output.txt",
CType(ocr.
Text,
Object).
ToString())
End If
Catch ex As Exception
Console.WriteLine("Exception: " & ex.ToString())
End Try
End Sub
End Class