Как мы помогали проводить медицинскую перепись в Республике Бангладеш
Как знают постоянные читатели нашего блога, в ABBYY разрабатывают не только Lingvo и FineReader, но и решения для автоматизации ввода документов и данных. Их часто используют для обработки переписей населения — мы работали в Греции, Литве, Саудовской Аравии, Таджикистане и Кувейте (статья о кувейтском проекте). Конечно, о работе в экзотических странах писать интереснее всего, и сегодня мы расскажем о медицинской переписи, которая прошла несколько лет назад в Республике Бангладеш.
Бангладеш — государство в юго-восточной Азии, занимает восьмое место в мире по численности населения (Россия, по данным Википедии, сейчас на 9 месте), граничит с Индией и Бирмой. 160-миллионное население Бангладеш живёт на площади всего 147 тысяч квадратных километров, то есть плотность населения очень высока. Сравните, на какой площади живём мы, а на какой — бангладешцы (а численность населения плюс-минус одинаковая).
Подавляющее большинство бангладешцев — сельские жители (135 миллионов из 160), и условия их жизни, мягко говоря, далеки от идеальных. Не во всех домохозяйствах есть доступ к питьевой воде, санитарные условия оставляют желать лучшего. При всём при том бангладешцы — молодцы, и в последнее время добились значительных успехов в области здравоохранения. Всемирная организация здравоохранения сообщает о выдающемся прогрессе Бангладеш во многих критически важных областях — в стране уменьшилась смертность новорожденных детей и детей младше пяти лет, увеличилась продолжительность жизни, стали более доступными прививки и более успешной борьба с туберкулёзом.
Генеральное управление по услугам здравоохранения (ГУУЗ) Министерства здравоохранения и семейного благополучия Бангладеш с 1961 г. проводит регулярный опрос населения, чтобы собрать данные о состоянии здоровья сельских жителей страны — наиболее распространенных хронических заболеваниях, смертности и её причинах, а также о бытовых и экономических условиях жизни. Эти данные необходимы для принятия правильных стратегических решений в области здравоохранения — на их основе разрабатывают те или иные программы медицинской поддержки, но собирать их дорого и сложно.
Саму перепись Министерство здравоохранения Башгладеш проводит самостоятельно. В учреждении есть целый штат служащих (они называются community health workers), которые регулярно посещают сельские домохозяйства, чтобы понять, как там дела и не нужна ли помощь — всего на службе их около 23 тысяч. Именно они занимались сбором данных и заполнением анкет.
Анкеты всегда обрабатывались вручную. На перенос данных в электронную систему уходило целых два года — шутка ли, обработать 30 миллионов страниц. Учитывая важность собираемой информации, это было слишком долго. В 2011 году Бюро статистики Бангладеш изучило опыт проведения подобных опросов и переписей всему миру и решило автоматизировать обработку анкет при помощи технологии интеллектуального распознавания символов — intelligent character recognition (ICR).
Итак, правительством Бангладеш был объявлен тендер на обработку анкет медицинской переписи, который выиграл наш партнёр — компания Devnet — с нашим решением ABBYY FlexiCapture. Но задолго до того, как был выбран победитель, организаторы тендера при помощи компаний, которые участвовали в тендере, разработали анкету, которую могла бы прочитать машина.
Анкета двуязычная. Большая часть подписей к полям и чек-боксам сделана на бенгальском — официальном языке Республики Бангладеш (местные называют его «бангла»). В Бангладеш, конечно, преподают английский в школах, но не все его знают, поэтому анкету не стали делать целиком на английском — пожалели переписчиков. Подписи к основным элементам формы продублированы на английском — чтобы наша техподдержка могла сориентироваться и понять, о чём речь, если при обработке данных возникнут трудности.
Бенгальский — язык специфический и довольно сложный — мы пока не распознаём, поэтому все поля, которые предстояло распознавать (пустые клеточки), переписчики должны были заполнять на английском языке.
Наверняка читателям интересно, какую информацию, собственно, предстояло собирать. Нам тоже стало интересно, и мы попросили партнёра перевести анкету для этой статьи.
Первый вопрос — коды регионов, районов и домохозяйств — это основной идентификатор анкеты. Если все жители дома не помещались на одном листе, именно этот код помогает при обработке анкеты «собрать» все листы вместе, чтобы никто не потерялся.
Во втором вопросе респондентов просили указать источник питьевой воды — и здесь выяснилось много тонкостей. Оказалось, что грунтовые воды в Бангладеш (а также в некоторых соседних регионах) часто заражены мышьяком — и это большая проблема. Существует целая программа, в рамках которой воду в скважинах исследуют на содержание мышьяка, а скважины потом маркируют. Зелёным — безопасные (Tube well green), красным — опасные (Tube well red), некоторые скважины исследовать не успели (либо жители, которым они принадлежат, отказались от исследований) — это третий вариант ответа. Подробнее о проекте с маркировкой можно прочитать в книге Arsenic Exposure and Health Effects, которая частично доступна в сети.
В третьем вопросе спрашивали тип уборной, в четвертом — экономическую ситуацию в семье.
Начиная с шестого вопроса, переписчики должны были перечислить всех жителей домохозяйства, указать, нет ли у них хронических заболеваний. Если в доме кто-то умер с момента проведения прошлой переписи — его также нужно было вписать в анкету вместе с датой и причиной смерти.
Когда анкета была разработана, наши партнёры сделали инструкцию для переписчиков, в которой было краткое объяснение — что такое «машиночитаемая форма» — и правила, по которым нужно такую форму заполнять. Например — писать чёрной или темно-синей ручкой, использовать заглавные английские буквы, не выходить за пределы клеточки, оставлять пустую клетку после каждого слова –, а также примеры правильного и неправильного заполнения. Вот такие.
Кроме инструкции, переписчики проходили специальные тренинги, и весь процесс их работы (начиная с тренингов и заканчивая предоставлением заполненных анкет) занял около 10 месяцев. Несмотря на тщательный инструктаж, ошибок при заполнении было довольно много. В среднем около 10% текста выходило за пределы клеток, часто переписчики в ответ на вопрос, где возможен только один ответ, отмечали больше одного чек-бокса, часто встречался почерк, который трудно было разобрать. Вдобавок тендер на выбор партнёра для обработки анкет затянулся (мы знаем, это часто бывает с тендерами), а собранные анкеты хранились в плохих условиях, и часть из них были подпорчены водой и плохим обращением. Всё это усложняло обработку анкет.
Схема обработки анкет выглядит так:
Сначала анкеты сканируют. Для этого использовались 10 сканеров Kodak i1420 и Kodak i3400. Пропускная способность модели i3400 — 50 страниц в минуту, 15 тысяч страниц в день, модели i1420 — 45 страниц в день, 13 тысяч страниц в день.
Дотошный читатель наверняка обратил внимание, что фон анкеты, рамки и некоторая пояснительная информация сделаны красным цветом, и удивился — как же так, бедная страна, столько краски. Конечно, красный цвет здесь неспроста. Можно настроить сканер таким образом, что цвет на этапе сканирования будет удаляться (drop-out colors). После сканирования с формы исчезнут все элементы, за исключением реперов (чёрных квадратов по углам) и заполненных полей.
Это нужно для улучшения качества распознавания. Например, если переписчик при заполнении анкеты не только «вылез» за пределы клетки, но ещё и часть буквы или цифры попала на красный текст (например, на название строки), программе будет сложно распознать символ. Если красный цвет убрать, эта проблема будет решена. Раньше такую операцию можно было проделать только при помощи сканера, в последних выпусках FlexiCapture при необходимости можно убирать цветной фон на программном уровне.
Когда сканирование завершено, FlexiCapture обрабатывает отсканированные изображения (убирает мусор, исправляет искажения) и распознаёт данные в форме.
Анкеты в системе объединяются в «пакеты». Пакет — это несколько переписных листов, относящихся к одному адресу. На один лист помещалось 12 человек, но в Бангладеш живут кучно, и во многих домах было больше 12 жителей — тогда переписчик брал новый лист. Итак, представьте ситуацию, когда работник центра сканирования несет пачку документов к сканеру и вдруг роняет её. Обратно с пола документы собираются не в том порядке, что был вначале и, ясное дело, сканируются, как попало. Заказчик переписи считал, что в подобном случае верификатор будет не настолько компетентен, чтобы правильно вручную собрать в системе все листы, относящиеся к одному дому. Поэтому система собирала пакет автоматически, используя закодированный адрес (который, как мы помним, был главным идентификатором переписного листа) и имя переписчика.
Поскольку программа может ошибиться, все данные нужно верифицировать — человек должен глазами сравнить распознанные символы с изображением на скане. Было организовано два больших центра верификации, в которых в две смены работали 120 человек. Выглядело это так:
Данные из чек-боксов не верифицировались — информация проверялась с помощью правил — например, в каких-то вопросах мог быть только один ответ и т.п.
Для верификации данных из остальных полей в помощь людям были разработаны скрипты, которые определяли ошибки в некоторых полях. Например, номер телефона мог содержать только 11 символов; были определенные правила при использовании кодов родственных связей, номеров домов, кодов региона и т.п. Если были ошибки, программа ставила «флажок», чтобы оператор обратил внимание на это место. Дальше оператор должен был решить, можно ли исправить эту ошибку путем сравнения распознанных данных с отсканированным изображением листа. Если, например, у переписчика плохо писала ручка, и система не распознала какой-то символ, ошибку исправляли. Если исправить не получалось, ошибке присваивали статус критической.
При верификации оператор может просматривать весь лист целиком, а может — только отдельное поле (а другой оператор — другое поле). Как правило, второй способ эффективнее, его и использовали в проекте. После верификации данные выгружались в базу — MS SQL enterprise 2012. В систему был интегрирован англо-бенгальский словарь имён — с его помощью все имена экспортировались сразу на бенгальском языке.
Вот, собственно, и вся история про перепись в Бангладеш. В заключение, как водится, немного статистики: в среднем в день операторы обрабатывали чуть больше 100 тысяч страниц, и 30 миллионов страниц было обработано примерно за 9 месяцев.
Светлана Лузгина
Служба корпоративных коммуникаций при поддержке ABBYY 3A (три А = Азия, Африка, Латинская Америка).