Когда-то давно для задачи OCR я сделал типа универсального интерфейса (interface в терминологии C#\Java), который реализуют адаптеры над конкретными движками. В конечном приложении используется интерфейс, разумеется, чтобы отвязаться от реализации. Сделал адаптеры над CuneiForm, MODI, FR, позже Tisseract. Поскольку для слова (а некоторые и для букв) движки возвращают коэффициент уверенности, то я объединял результаты от разных движков, и комбинация CuneiForm + MODI давала результат не хуже, чем FR. Насчёт NER тоже хорошо бы что-либо подобное. Кстати, Apache предлагал такую универсальную спецификацию по обработке неструктурированных данных - стандарт UIMA. Он реализован на Java. Почему-то стандарт не получил достойной оценки, хотя мог бы...