Це можна вирішити досить просто за допомогою простого узгодження шаблону. Я не знаю точно, як у вас це було налаштовано, тому я просто опишу алгоритм взагалі та використовую ілюстрації.
Зауважте, що номери віршів мають чітку межу, яку можна легко використовувати для виявлення початку та кінця вірша. Тому створіть для цього шаблону бінарний шаблон і збережіть його. Щось на зразок цього:
Оскільки кількість рядків на екрані відома заздалегідь (ви форматуєте сторінку) і кожен вірш має постійну висоту, ви можете легко (алгоритмічно) зробити висновок, де на екрані повинні бути координати Y для центральних ліній віршів . Це демонструє ідею:
Коли користувач торкнеться вірша, отримайте координати XY і переведіть координату Y до найближчого центру вірша.
Потім, починаючи з координати X, виконайте просту відповідність шаблону (перехресну кореляцію) у цьому рядку. Перша відповідність (пік у перехресній кореляції) у напрямку вперед (зліва), буде кінцевою точкою для вірша. Якщо у зворотному напрямку (праворуч) немає збігів, тоді рухайтесь вгору на один вірш (що ви можете зробити, оскільки ви знаєте координату Y середньої лінії) і повторіть. Перша відповідність з лівого кінця буде початковою точкою вірша. Аналогічно, якщо немає прямої відповідності на лінії, рухайтеся вниз по одній лінії та повторіть.
Ось коротка ілюстрація ідеї. Жовте поле - це місце, де користувач торкається вірша. Потім ви зробите перехресну кореляцію зі своїм шаблоном, і сині кола будуть відповідністю.
У цій відповіді я також використовую відповідність шаблонів , якщо вам цікаво бачити це в дії.
Визначивши початкову точку вірша, використовуйте розпізнавач тексту арабською мовою, щоб вивести номер вірша всередині цієї межі та відтворити відповідний аудіофайл.
Простіше рішення:
Більш просте рішення, якщо ви не хочете пройти це, - це зберегти координати XY віршованих початкових точок (будьте простими та використовуйте центральні точки), і як тільки ви отримаєте координати введення користувача, ви можете знову зробити оснащення його до центральної лінії, а потім піти назад, щоб побачити, з чого починається вірш. Це може мати перевагу - швидше.
Я не висував це як перше рішення, тому що ви, схоже, відкидали подібну думку в коментарях. Зрештою, це залежить від ваших обмежень - чи скоріше ви будете робити обчислювальну роботу (відповідність шаблону - що, до речі, також вимагає зберігання шаблону) або використання пам'яті (зберігання координат).
Якби я був ти, я, певно, пішов би з цим, але спробувати рішення для обробки зображень можна було б цікаво спробувати.