Я использовал n-грамм для этого несколько лет назад, с довольно приличными результатами. Я использовал языковой детектор Apache Nutch, который внутри себя использует n-граммы слов и внутрислов. Тогда «ngram-профиль» вашего текста сравнивается с n-граммовыми профилями учебного материала. Nutch в дополнение к языку дает оценку / достоверность, и я использовал жесткие ограничения на основе языка (должен быть тот, в котором документы) и оценки. Выдержал большую часть искаженного текста, но это несколько дорого в вычислительном отношении.