Чтение с фото текста: Распознать текст онлайн с картинки, pdf или фото

Содержание

Как мы распознаем фото документов пользователей. Часть I / Хабр

Привет, Хабр! Я Илья, Data Scientist в inDriver. В работе нам часто приходится распознавать документы водителей или пассажиров для их верификации в приложении. Наша команда выработала свой подход к идентификации текста и фото, которым я хотел бы поделиться.

В первой части статьи кратко расскажу о том, как мы распознаем фото документов и текст на них. Во второй более предметно поговорю о моделях CRAFT, CRNN и их использовании. Приятного чтения!

Содержание

Минутка истории

Задача оптического распознавания символов (OCR — optical character recognition) — старая проблема, восходящая к 1970-м годам, когда была разработана первая технология OCR c омни-шрифтами (omni-font). Сложность этой задачи обусловлена естественными особенностями текстов:

  • В некоторых алфавитах найти и распознать буквы очень сложно (например, в арабском, китайском, особенно в курсиве).

  • Существует много разных шрифтов и стилей, некоторые символы слишком похожи на другие (например, буквы I и l, цифра 0 и буква O).

  • Рукописный текст бывает всех форм и размеров.

Все методы распознавания текста с глубоким обучением можно условно разделить на 3 большие категории:

  • Character-based. Эти методы сначала пытаются найти и распознать определенные местоположения отдельных символов, а затем сгруппировать в слова.

  • Word-based. Методы решают распознавание текста как проблему классификации слов, где классы — общие слова на определенном языке.

  • Sequence-to-sequence. Методы рассматривают OCR как проблему маркировки последовательностей. Одни из самых ранних работ по этому типу методов была написана китайскими авторами. Статья является оригинальной работой по описанию модели CRNN. Также в ней дается подробный обзор конкретной архитектуры GRU-CNN с вычислительной точки зрения. Различные модификации моделей CRNN работают лучше, чем другие, на многих эталонных наборах данных OCR.

3 категории распознавания текста

Первой программой, распознающей кириллицу, был «AutoR» российской компании «ОКРУС». Программа начала распространяться в 1992 году и работала под управлением операционной системы DOS. Алгоритм «AutoR» был разработан и испытан еще в конце 1960-х годов биофизиками и выпускниками МФТИ Г. М. Зенкиным и А. П. Петровым (1, 2).

Распознавание фото документов

Перейду к тому, как все устроено в inDriver. В ряде случаев нам необходимо автоматически распознавать фото документов пользователей для их верификации в приложении. При распозновании мы регулярно стакливались с несколькими проблемами:

  • Часто необходимо распознать не весь документ, а какую-то область или поле.

  • Фотографии имеют низкое разрешение из-за старой модели телефона, или документ расположен далеко от камеры.

  • Фотографии сделаны под углом по оси Z. 

  • Область документа для распознавания может быть испорчена или потерта, так что бывает трудно разобрать символы.

  • Используются разные шрифты и разные типы документов в пределах страны или города.

  • Фотография может быть перевернута на 90, 180 или 270 градусов.

Распознавание документов в inDriver включает в себя 2 основных этапа:

  1. Segmentation. Сегментация области документа, которая должна быть распознана.

  2. Recognition. Распознавание текста или Detection (детекция) и распознавание.

Расскажу подробнее о сегментации. Задачи компьютерного зрения разделяют на несколько видов:

  • Classification. Классификация изображения по типу объекта, которое оно содержит.

  • Object Detection. Обнаружение всех объектов указанных классов и определение охватывающей рамки для каждого из них (bounding box).

  • Semantic Segmentation. Выделение разных классов объектов на изображении, включая среду. 

  • Instance Segmentation. Разделение объектов одного класса на разные объекты.

  • Panoptic Segmentation. Объединение задач семантической и инстанс-сегментации. Также в задаче паноптической сегментации каждому пикселю изображения должна быть присвоена ровно одна метка.

Примеры сегментации изображений

В первой итерации мы использовали instance segmentation модель на TensorFlow2 архитектуры MASK RCNN (TensorFlow Hub). С помощью Fine-Tuning дообучили модель на наших данных. Она позволила получать bounding box и mask размеченной области документов. 

Но вскоре мы отказались от ее использования. Проблема — много зависимостей от TensorFlow Object Detection API. Нужно было сериализовывать данные в собственный формат TFRecords

Было решено перейти на PyTorch-фреймворк detectron2. На тестах метрики у моделей из detectron2 были выше, чем у модели на TensorFlow2 (даже без тестов можно сравнить метрики на TFHub и model zoo detectron2). Для detecron2 использовали предобученные веса модели СOCO-InstanceSegmentation/mask_rcnn_R_50_FPN_3x (в зависимости от ресурсов и времени можно выбрать готовые веса).

Датасет создавался с помощью ручной разметки через приложение labelme, а потом конвертировался в формат COCO датасета, где был написан свой, немного адаптированный скрипт. Была попытка использовать Label Studio, но софт показался не совсем дружелюбным и больше ориентированным на команду разметки.

Так как в документах обычно одно уникальное поле и оно не дублируется, можно было использовать модели из semantic segmentation (маски) или object detection (bounding box). Но мы применили instance segmentation, чтобы получить маски и боксы.

Следующий шаг после определения нужных полей для распознавания — само распознавание текста.

Распознавание текста

В первой итерации использовались несколько моделей распознавания:

  • EasyOCR. Для детекции CRAFT + CRNN для распознавания.

  • keras-ocr. CRAFT + CRNN.

  • MMOCR. Модели распознавания SAR, SATRN, RobustScanner, SegOCR, а также разные модели детекции текста в связке с моделями распознавания.

В основе библиотеки EasyOCR (PyTorch), как и в keras-ocr лежат 2 модели: детекции текста CRAFT(Character Region Awareness for Text Detection) и распознавания текста CRNN. Фреймворк MMOCR предлагает намного больше моделей.

Tesseract изначально не рассматривался, так как он хорошо работает с фотографиями высокого разрешения (где могут помочь морфологические операции), что нам не подходит. Также нам нужна высокая скорость обработки на GPU. Хотя Tesseract можно адаптировать под себя, как, например, в статье с исправлением шрифтов, но этот метод не универсален.

Используемые нами модели выдавали в ответ координаты боксов, а также распознанный текст и его score. Из всех моделей выбирался вариант с наибольшим score. Часто фото документов были сделаны под углом, для выравнивания использовался алгоритм Perspective Transformation по 4 координатам бокса. Использовалась и предобработка маски с помощью opencv. Например:

  • Выравнивание гистограммы cv2.equalizeHist.          

  • Расширение изображения dilation:

kernel = np.ones((5,5), np.uint8).
i_im = cv2.dilate(i_im, kernel, iterations=1).
i_im = cv2.normalize(i_im, i_im, 0, 255, norm_type=cv2.NORM_MINMAX)
i_im = cv2.GaussianBlur(i_im, (7, 7), 0)
kernel = np.array([[-1,-1,-1], 
                    [-1, 9,-1],
                    [-1,-1,-1]])
i_im = cv2.filter2D(i_im, -1, kernel)
im = cv2.threshold(im, 0, 255, cv2.THRESH_BINARY|cv2.THRESH_OTSU)[1]

Для улучшения качества изображения мы пробовали увеличивать разрешение с помощью интерполяции и моделей Super-Resolution. Для правильного определения ориентации маски или фото применяли модель классификации на 4 классах с поворотом на 0, 90, 180, 270 градусов.

Также были попытки обучить на синтетически сгенерированных данных модель CRNN из EasyOCR. Но здесь мы столкнулись с проблемой подбора шрифтов — не удавалось найти один шрифт, чтобы все символы были похожи на символы из оригинальной выборки.

Поэтому при генерации синтетических данных мы использовали несколько шрифтов, которые подбирали с помощью онлайн-сервисов (например, WhatTheFont! « MyFonts). 

Еще столкнулись с изначально некорректной разметкой при сегментации, выделяли не только нужные данные, но и поле/ячейку, часто с названием поля и рамками. Приходилось на препроцессинге выделять только нужную область, а также использовать маски с пустыми рамками для генерации синтетического датасета. 

Так как готовые модели были обучены на синтетических датасетах, которые были сгенерированы без большого разнообразия шрифтов и с недостаточной аугментацией, на реальных фото часто путались цифры с буквами (например 6 и G, 7 и T, 2 и Z).

При работе с документами нам часто приходится распознавать определенные последовательности чисел или символов. Поэтому мы решили попробовать character-based метод. Для выделения области распознавания и разделения на символы мы сначала использовали средства opencv. Но не всегда удавалось отделить символы друг от друга, потому что часто документы были измяты или потерты, и исходное фото было в низком разрешении.

В итоге для разделения символов мы начали использовать модель CRAFT. Для Python есть удобная реализация в виде библиотеки craft-text-detector. Библиотека позволяет регулировать параметры выделения текста и получать боксы каждой области текста или символа в отдельности.

Для примера распознаем текст с помощью библиотеки craft-text-detector на кадрах из первого части «Человека-паука» 2002 года:

Оригинальное изображениеText detection boxesText score heatmapLink score heatmap

Здесь:

  • Text detection boxes — боксы с текстами (которые получаются с помощью работы моделей CRAFT + LinkRefiner).

  • Text score heatmap — вывод модели CRAFT (по каждому символу).

  • Link score heatmap — вывод модели LinkRefiner (модели связи символов).

Чтобы получить char-boxes, а не text-boxes, мы можем выставить значение параметра link_threshold=999999 (сделать большим). Тогда не будет учитываться работа модели связи символов LinkRefiner. Например:

prediction_result = get_prediction(
    image=image,
    craft_net=craft_net,
    refine_net=refine_net,
    text_threshold=0. 7,
    link_threshold=999999,
    low_text=0.4,
    cuda=True,
    long_size=1280
)
Char detection boxes

Более подробный код запуска есть на GitHub. Также с этой библиотекой удобно менять разные пороговые значения. Например, для распознавания более мелких или крупных шрифтов.

Далее боксы распознаных символов можно подать в модель классификации, которая обучается с дополнительной аугментацией с учетом поворотов и прочих шумов.

Но подробнее о моделях CRAFT, CRNN и их использовании я расскажу в следующей части статьи. Если у вас есть вопросы или комментарии — пишите, с удовольствием отвечу. 

В Google Lens теперь можно прослушивать текст с изображения

В приложении Google Lens теперь есть функция прослушивания и перевода текста с изображения. Система сначала распознает куски текста на изображении, формирует структурированный текст из кусков, переводит текст и озвучивает перевод. Google презентовали функцию на конференции I/O 2019. Приложение должно помочь людям, у которых есть проблемы с чтением и переводом текста.

Теперь приложение доступно в Google Play Store для всех пользователей.

По всему миру около 800 миллионов взрослых людей не умеют читать и писать. Мигранты сталкиваются с проблемой языкового барьера первое время переезда в страну. Именно с целью помощи таким людям Google обновили функционал Google Lens. Google Lens использует компьютерное зрение, машинное обучение и граф знаний Google. Основная проблема в обучении такой модели — требования к легковесности. Система должна работать на любом смартфоне на Android. 

Захват изображения

Исследователи разработали две стратегии для захвата, чтобы балансировать между задержкой захвата кадра и производительностью. Для этой части системы использовалась CameraX архитектура. На смартфонах последних моделей, которые способны предоставлять постоянный поток кадров в высоком разрешении, изображение захватывается мгновенно. На более медленных смартфонах захват изображения происходит при нажатии на кнопку, чтобы не нагружать CPU.

Распознавание текста

После того как изображение получено, система должна распознать буквы, которые составляются в слова, предложения и абзацы. Чтобы сделать это, изображение отправляется на сервер Lens, где оно обрабатывается. Затем применяется оптическое распознавание символов (OCR). Нейросеть выдает границы распознанных букв, которые объединяются в строки текста.

Пример работы части системы, которая распознает буквы, а затем и текст, на изображении

Объединение символов в слова — это двухступенчатый последовательный процесс. На первом шаге применяется — Hough Transform, которая предполагает, что текст расположен на параллельных линиях. На втором шаге используется Text Flow, который распознает текст, не расположенный на параллельных линиях.

Все шаги от распознавания шрифта и направления текста до распознавания текста выполняются отдельными сверточными нейросетями с дополнительной LSTM нейросетью. 

Объединение блоков текста в структурированный текст

Когда отдельные слова распознаны, нужно определить, как объединить их в текст. Эта задача решается с помощью сверточной нейросети, которая распознает последовательные блоки текста. Для перевода структурированного текста используется модель из Google Translate.

Воспроизведение текста вслух

Последний шаг в системе — воспроизведение текста перевода. Для этого используется сервис Google Text-to-Speech (TTS). Нейросеть основана на WaveNet архитектуре от DeepMind.

Извлекаем текст из картинок с помощью JavaScript | by Ilya Afanasov

Попробуем написать небольшое приложение, которое поможет распознать текст из изображений с помощью библиотеки Tesseract.js.

Библиотека будет очень полезна при выполнении самых базовых задач (сканы или фото визиток, документов, книг). Библиотека помимо самого текста еще умеет возвращает “уровень уверенности” (confidence), который можно использовать для более точного перевода.

Но есть и свои минусы: если на фоне пристуствует много деталей или текст набран нестандартными шрифтами, то точность обработки очень падает.

В конце статьи можно посмотреть на готовое решение и скачать готовый код.

В работе будем использовать библиотеку Tesseract.js.

  1. Подготовим разметку и подключим библиотеку
  2. Распознаем изображение
  3. Выводм результат

Библиотека доступна на github: [https://github.com/naptha/tesseract.js]

Разметим основные элементы будущего приложения:

  1. Селект с выбором языка
  2. Кнопка для загрузки файла с изображением текста
  3. Блок в который выведем результат
  4. Кнопка “Начать сканирование”
  5. Подключаем библиотеку из CDN и будущий скрипт

Распознать изображение нам поможет метод recognize.

Посмотрим как он работает в документации библиотеки:[https://github.com/naptha/tesseract.js/blob/master/docs/api.md#recognize]

Он принимает в себя три объекта: файл изображения, язык и объект настроек с логгером. На выходе получаем Promise, который содержит распознанный текст.

Пример полученного результата

Опишем функции

  1. updateProgress() — отслеживает процесс обработки и выводит весь процесс в блок с id=”log”
  2. setResult() — выводит результат
  1. Описываем событие “click” по кнопке с id “start
    [https://learn.javascript.ru/introduction-browser-events]
  2. Выполняем распознавание
  3. Выводим результат

Попробуем взять рандомную визитную карточку:

и загрузим ее:

Видим процесс обработки и конечный результат.

В следующей статье попробуем сделать более привлекательный UI добавив стили.

Google Photos теперь могут читать текст в мире изображений / цифровой информации

Поиск в Google Фото означает знание ключевого слова, которое приведет к документу, связанному с ключевым словом, но не больше. У Google теперь есть мощный фильтр оптического распознавания символов (OCR), который может читать не только изображение, но и текст на изображениях. Раньше Google мог только классифицировать изображение, что означает, что изображение с небом, горой, деревьями и автомобилем будет отображаться, если пользователь выполняет поиск по любому из заданных ключевых слов. Однако теперь даже при поиске текста, упомянутого на картинке, будет отображаться изображение. Мы надеемся, что Google Фото добавит эту услугу к концу этого месяца.

Чтобы объявить об этом захватывающем новом дополнении, Google опубликовал новость через свою официальную учетную запись Twitter после того, как один из пользователей заметил новую функцию и написал об этом в Твиттере. Теперь, когда пользователь будет искать подходящее ключевое слово, которое упоминается в виде текста на изображении, Google сможет получить то же самое изображение. Более того, новая функция не только читает теги и тексты, но и настолько сложна, что не пропускает ни слова, независимо от того, насколько оно маленькое или даже если оно написано под углом.Кроме того, эта функция кажется очень чувствительной к скриншотам и изображениям с текстом.

Вы это заметили! Начиная с этого месяца, мы внедряем возможность поиска ваших фотографий по тексту на них.

Найдя нужную фотографию, нажмите кнопку «Объектив», чтобы легко скопировать и вставить текст. Возьмите это, невозможные пароли Wi-Fi 😏

— Google Фото (@googlephotos) 22 августа 2019 г.

Это дополнение считается одной из самых ожидаемых функций, потому что теперь поиск в Google Фото станет идеальным для документов, любых сохраненных паролей вещей, с которых большинство пользователей делает снимки экрана.Это захватывающее новое дополнение работает для веб-пользователей, iOS и Android. Эта функция уже реализована на большинстве устройств, а это значит, что вы можете проверить ее прямо сейчас.



Фото: SOPA Images через Getty Images

Читать далее: Google Фото достигает миллиарда пользователей в рекордно короткие сроки

Чтение текста с изображения с помощью одной строки кода Python | Дарио Радечич

Работа с изображениями — нетривиальная задача. Вам, как человеку, легко посмотреть на что-то и сразу понять, на что вы смотрите.Но компьютеры так не работают.

Фото Ленина Эстрады на Unsplash

Непосильные для вас задачи, вроде сложной арифметики, да и вообще математики, это то, что компьютер пережевывает, не вспотев. Но здесь действует с точностью до наоборот — тривиальные для вас задачи, например распознавание кошки или собаки на изображении, очень сложны для компьютера. В каком-то смысле мы идеальная пара. По крайней мере, сейчас.

В то время как классификация изображений и задачи, требующие некоторого уровня компьютерного зрения, могут потребовать хорошего кода и глубокого понимания, чтение текста с несколько хорошо отформатированного изображения оказывается в Python однострочным — и может быть применено ко многим реальным проблемам.

И в сегодняшнем посте я хочу доказать это утверждение. Придется кое-что установить, но это не займет много времени. Вот библиотеки, которые вам понадобятся:

Я не хочу больше продлевать эту вступительную часть, так почему бы нам не перейти к хорошему прямо сейчас.

Теперь эта библиотека будет использоваться только для загрузки изображений, вам на самом деле не нужно иметь четкое представление о ней заранее (хотя это может быть полезно, вы поймете почему).

Согласно официальной документации:

OpenCV (Библиотека компьютерного зрения с открытым исходным кодом) — это библиотека программного обеспечения для компьютерного зрения и машинного обучения с открытым исходным кодом.OpenCV был создан, чтобы обеспечить общую инфраструктуру для приложений компьютерного зрения и ускорить использование машинного восприятия в коммерческих продуктах. Будучи продуктом с лицензией BSD, OpenCV позволяет компаниям легко использовать и модифицировать код.[1]

В двух словах, вы можете использовать OpenCV для выполнения любых преобразований изображений , это довольно простая библиотека.

Если он еще не установлен, в терминале будет всего одна строка:

 pip install opencv-python 

Вот и все.До этого момента было легко, но скоро все изменится.

Что это за библиотека? Ну, согласно Википедии:

Tesseract — это движок оптического распознавания символов для различных операционных систем. Это бесплатное программное обеспечение, выпущенное под лицензией Apache версии 2.0, а разработка спонсируется Google с 2006 года.[2]

Я уверен, что сейчас доступны более сложные библиотеки, но я обнаружил, что эта работает довольно хорошо.Исходя из моего собственного опыта, эта библиотека должна уметь читать текст с любого изображения, при условии, что шрифт не какой-то бык***, который даже вы не умеете читать.

Если он не может прочитать ваше изображение, потратьте больше времени на работу с OpenCV, применяя различные фильтры, чтобы выделить текст.

Теперь установка немного затруднительна. Если вы используете Linux, все сводится к паре команд sudo-apt get :

 sudo apt-get update 
sudo apt-get install tesseract-ocr
sudo apt-get install libtesseract-dev

Я на Windows, так что процесс немного более утомительный.

Во-первых, откройте ЭТОТ URL-адрес и загрузите 32-битную или 64-битную программу установки:

Установка сама по себе проста, сводится к нажатию Next пару раз. И да, вам также нужно выполнить установку pip :

 pip install pytesseract 

Это все? Нет. Вам все еще нужно сообщить Python, где установлен Tesseract. На машинах с Linux мне не нужно было этого делать, но в Windows это необходимо.По умолчанию он установлен в Program Files .

Если вы все сделали правильно, выполнение этой ячейки не должно выдавать ошибки:

Все хорошо? Вы можете продолжать.

Чтение текста с изображения — довольно сложная задача для компьютера. Вдумайтесь, компьютер не знает, что такое буква, он работает только с цифрами. То, что происходит за капотом, может сначала показаться черным ящиком, но я призываю вас продолжить расследование, если это вас интересует.

Я не говорю, что PyTesseract всегда будет работать идеально, но я нашел его достаточно хорошим даже для некоторых сложных изображений. Но не прямо из коробки. Некоторые манипуляции с изображением необходимы, чтобы выделить текст.

Знаю, это сложная тема. Возьмите его один день за один раз. Однажды это станет для вас второй натурой.

Понравилась статья? Станьте участником Medium , чтобы продолжать обучение без ограничений. Я получу часть вашего членского взноса, если вы воспользуетесь следующей ссылкой, без каких-либо дополнительных затрат для вас.

Google читает текст на ваших фотографиях, но на этот раз это хорошо

Технологические компании подверглись серьезной критике (в основном заслуженной) за то, как они обращаются с личной информацией и конфиденциальностью своих пользователей. Google, в частности, часто становился мишенью из-за того, как компания отслеживает пользователей в Интернете, а затем нацеливает рекламу на основе активности пользователя в Интернете. Ни для кого не стало сюрпризом, что Google прослушивал записанные фрагменты нашего взаимодействия с Google Assistant.

Теперь оказывается, что Google Фото читает текст на ваших фотографиях, и на этот раз это хорошо. Google в четверг подтвердил в своем твите, что начал развертывать возможность поиска текста на ваших фотографиях, копирования и вставки его в документы и электронные письма или даже подсказки пароля WiFi.

Вы это заметили! Начиная с этого месяца, мы внедряем возможность поиска фотографий по тексту на них.

Найдя нужную фотографию, нажмите кнопку «Объектив», чтобы легко скопировать и вставить текст.Возьмите это, невозможные пароли Wi-Fi

— Google Фото (@googlephotos) 22 августа 2019 г.

Послушайте, Google Фото – одно из тех приложений, которые всегда были действительно полезными, но почему-то я им никогда не пользуюсь. Я имею в виду, что это на моем iPhone в основном потому, что оно обеспечивает автоматическое резервное копирование всех моих фотографий, что очень удобно, но это все. Я знаю, что он может делать множество интересных вещей, например упорядочивать фотографии по местоположению, легко создавать общие альбомы или выполнять поиск по лицам людей. Я просто никогда не думаю, чтобы использовать его.

Но это другое. На самом деле это то, что я бы использовал на регулярной основе, и это то, чего не делает стандартное приложение Apple Photos.

Вот почему это на самом деле очень полезно:

Вы были на собрании, на котором вам приходили всевозможные замечательные идеи, написанные на доске. В конце встречи кто-то должен сделать фото, чтобы вы все не забыли, что вы обсуждали, только для того, чтобы потом все это расшифровать. Теперь, когда вы это сделаете, Google Фото автоматически расшифрует его, позволит вам искать текст на доске, а также копировать и вставлять этот текст в другой документ.

Или представьте, что вы фотографируете чек и не только сохраняете его на потом, но и можете искать. Больше не нужно пытаться вспомнить, что вы получили за 29,84 доллара в Staples, пришло время отчета о расходах.

И, очевидно, сфотографировать пароль WiFi для вашего беспроводного маршрутизатора — это вещь. Если это вы, я думаю, это значительно упростит копирование и вставку даже самых смехотворно длинных случайных строк букв и цифр.

Я уже умею это делать с Evernote.На самом деле, я делаю это все время. Преимущество Google Фото в том, что он автоматически синхронизирует мою фототеку, и мне не нужно ничего делать. Мне не нужно открывать другое приложение, я могу просто сделать снимок камерой, а Google Фото сделает все остальное.

Конечно, разумно спросить, действительно ли вы хотите, чтобы Google начал читать текст на ваших фотографиях. Распознавание текста является частью Google Lens, технологии искусственного интеллекта (ИИ), которая распознает местоположение, лица, а теперь и текст на ваших фотографиях.Эта же служба также сохраняет вашу активность в вашей учетной записи Google, если у вас включена функция «Активность в Интернете и приложениях».

Компания Google упростила удаление таких действий, если вас беспокоит, что компания делает с вашей информацией. И, если вы вообще не хотите, чтобы он сохранялся, Google говорит, что вы можете отключить «Активность в Интернете и приложениях», хотя вы потеряете некоторые полезные функции, такие как сохраненная история.

Лично я не делаю много очень конфиденциальных фотографий, представляющих коммерческую тайну компании, или что-либо еще в этом отношении.Я не так беспокоюсь. Как и во всем, вам придется решить для себя, стоит ли выгода потенциального удара по конфиденциальности. Но если мне никогда не придется запоминать еще один пароль от WiFi, я считаю это небольшой победой.

Мнения, выраженные здесь обозревателями Inc.com, являются их собственными, а не мнениями Inc.com.

Распознавание текста из изображения в Swift | by Тони Уилсон jesuraj | IVYMobility TechBytes

Как работает OCR и как распознавание изображений выполняется в swift

Привет, сначала я объяснил процесс OCR. Если вам нужна только часть кода , идите вниз, приятель (спасибо).

Оптическое распознавание символов

  • OCR известное как Оптическое распознавание символов или оптическое считывание символов
  • OCR Будет сканировать документ или файл изображения, а затем преобразовывать текст в машиночитаемый

Процесс OCR
9 Я украл изображение из Google

позвольте мне разбить процесс один за другим и объяснить вам

Получение изображения
  • В этом процессе изображение/документ будет отсканировано и заменен каждый пиксель в изображении черным или белый пиксель

Пример изображения

Примечание. Это мое собственное изображение

Таким образом, наше изображение будет преобразовано.Далее

Предварительная обработка
  • Области за пределами текста будут удалены

Пример изображения

После предварительной обработки этого черно-белого изображения мы получим изображение, показанное выше.

Сегментация

Просто посмотрите на 22 , он был как бы объединен с одним и другим, поэтому в этом процессе OCR будет сегментировать эти типы

Извлечение признаков

  • В этом процессе будет каждый символ Распознавание и преобразование в машиночитаемый текст
  • OCR имеет много шрифтов, будет сравниваться и преобразовываться
  • Их много Подход, покажет несколько двух с функциями

Подход #2

  • В этом Подходе будет браться строка за строкой (например, чтение человеческим глазом) и преобразовываться

Подобных подходов существует много. Он основан на том, какая технология нам нужна

Постобработка

Компьютер тоже делает какую-то ошибку (OCR делает орфографическую ошибку при распознавании), так что здесь постараюсь исправить.

Часть кодирования приветствует вас

Итак, процесс оптического распознавания текста для разработчиков iOS будет похож на

Мы можем сделать это просто с помощью зрения.

Step -1

  Import  Vision   Vision 

STEP-2
 // Преобразование изображения в CJImage  Охранник   Пусть  CGImage = ImageWithText.Image ?CGImage  Else  { Return } 

шаг – 3

 // создание запроса с помощью cgImage  
let
handler = VNImageRequestHandler(cgImage: cgImage, options: [:])

Шаг -4

 // Vision предоставляет свои возможности распознавания текста через  VNRecognizeTextRequest  , изображение тип запроса на основе, который находит и извлекает текст в изображениях.  Пусть  запрос = vnrecognizetextrequest {запрос, ошибка  в 
охранника
Пусть наблюдения = request.results как [vnrecognizedTextobservation],
Ошибка == NIL ELL { return } наблюдения.compactMap({ $0.topCandidates(1).first?.string }).joined(separator: ", ")
print(text) // текст, который мы получаем из изображения}

VNRecognizeTextRequest- основанный на изображении тип запроса, который находит и извлекает текст в изображениях (так просто)

шаг -5

 запрос.underiationlevel = vnrequesttextrecognitiontionlevel  попробуй  Handler.perform ([request]) 

Здесь у нас есть два пути для распознавания 50021 Fast Path и Точный путь

Быстрый путь
  • , аналогичный для традиционного распознавания оптического символа
  • использует метод обнаружения одного символа
 //Просто добавьте .   быстро  в конце 
request.recognitionLevel = VNRequestTextRecognitionLevel.быстро

Точный путь
  • Использует нейронную сеть для поиска текста
  • построчный метод (подобно человеческому чтению)
 // Просто добавьте .  быстрый  в конце 
request.recognitionLevel = VNRequestTextRecognitionLevel.accurate

Для нескольких языков в

VNRecognizeTextRequest
 // просто добавьте код языка   
request.recognitionLanguages ​​= уровень распознавания = VNRequestTextRecognitionLevel.точный
try handler.perform([request])

Get your -> output -> Enjoy

Вот и все. Надеюсь, вы узнали кое-что об OCR.

Если какая-то ошибка или вам нужно крикнуть мне, сеанс комментариев всегда открыт в текст, который можно озвучить (дополнительную информацию об оптическом распознавании символов см. в Руководстве по использованию технологий для чтения). Смартфоны также оснащены аппаратной камерой, а это значит, что у них есть все необходимое, чтобы стать универсальными «читающими машинами».

Ранее в этом руководстве мы упоминали, что Google Goggles и Talking Goggles для Android и iOS могут определять и распознавать некоторый текст. Другие приложения, такие как TextGrabber и Prizmo, были оптимизированы исключительно для выполнения этих задач. Однако эти приложения, как правило, более чем привередливы. Вы должны выровнять текст идеально прямоугольно и держать телефон абсолютно неподвижно и на правильном расстоянии от страницы.Излишне говорить, что это не те навыки, в которых преуспевают многие люди с нарушениями зрения.

Несколько лет назад компания K-NFB Reading Technology Inc выпустила продукт под названием KNFB Reader. Этот программный пакет позволял пользователям некоторых функциональных телефонов Nokia, работающих под управлением операционной системы Symbian, делать фотографии распечатанной страницы, превращать их в текст, а затем читать этот текст вслух. Впоследствии операционная система Symbian перестала работать, но в начале осени 2014 года с большой помпой компания выпустила новую версию KNFB Reader для iOS

.

KNFB работает на ряде устройств Android, в зависимости от скорости обработки и качества камеры.KNFB работает на iPhone от 4s до 6s Plus, iPod touch 5 и 6, а также на iPadAir2. Технологии быстро меняются — узнайте у разработчика, работает ли приложение на вашем конкретном устройстве.

Прочтите обзор устройства чтения KNFB для iOS в выпуске AccessWorld за ноябрь 2014 г., чтобы узнать больше. Чтобы пробудить ваш интерес, ниже приведены некоторые из функций KNFB Reader, учитывающих слепоту:

  • Приложение использует новейшее и самое передовое распознавание текста и включает это программное обеспечение в приложение.Вам не нужно ждать, пока изображение будет загружено на сервер компании и распознано там.
  • KNFB Reader чрезвычайно щадящий в отношении положения цели. Он автоматически выпрямит и/или повернет целевую страницу для оптимального распознавания.
  • Интерфейс приложения понятен и прост, и он был разработан с нуля для работы с программой чтения с экрана VoiceOver.
  • Приложение предлагает удобный элемент управления, облегчающий позиционирование, с такими сообщениями о состоянии, как: «Видны правые нижние края; повернут на 10 градусов против часовой стрелки.Или, в идеале, «Все четыре края видны; повернут на ноль градусов по часовой стрелке». Вы также можете включить Навигацию по наклону, которая обеспечивает тактильную (вибрационную) обратную связь, помогающую расположить ваше устройство над целевым текстом.

Чтобы прочитать письмо с помощью KNFB Reader, выполните следующие действия:

  • Запустите приложение KNFB Reader
  • Положите первую страницу письма, счета или проспекта на ровную, хорошо освещенную поверхность. Приложение будет читать только печатный (не рукописный) текст.
  • Положите устройство iOS (текущий список совместимых устройств см. на веб-сайте KNFB Reader) поверх центра страницы, затем медленно поднимите его на 9–12 дюймов.
  • Выполните двойное нажатие одним пальцем в любом месте в левой части экрана iPhone. Вы услышите звук затвора камеры, затем, через несколько секунд, текст начнет говорить.
  • Смените страницы и повторите.

KNFB Reader почти идеально распознает стандартную печатную страницу. Он также хорошо читает коробку и этикетки на банках.Многие пользователи даже сообщают об успешном использовании приложения для чтения предсказаний на китайском печенье с предсказаниями.

Работа с текстом на изображениях с помощью TextSniper и поиска по фотографиям

Сколько я себя помню, между текстом и графикой существует категорическое разделение. Вообще говоря, вы можете искать, копировать, редактировать и иным образом манипулировать текстом по символу, слову, предложению, абзацу или документу. С другой стороны, хотя графика не является неизменной, обычно вы можете работать с ней только на уровне пикселей (хотя некоторые векторные форматы допускают манипулирование на уровне объектов).

Но, конечно же, появление текста в графических файлах — обычное дело. Он может быть прекрасно читаем, но вы не можете выделить его, скопировать или сделать с ним что-либо еще как с текстом. Эти символы — просто наборы пикселей.

Я начал использовать пару приложений, которые стирают это различие между текстом и графикой. TextSniper от Андрея и Валерия Богукисов обещает выполнять оптическое распознавание символов (OCR) всего, вокруг чего вы можете нарисовать прямоугольник, по сути, позволяя копировать текст с экранных изображений любого типа.А поиск фотографий Alco Blom предлагает приложения для Mac и iOS, которые выполняют распознавание текста, найденного на фотографиях в вашей библиотеке фотографий, что позволяет вам находить изображения по тексту, который они содержат, и копировать этот текст. Оба работают хорошо, в рамках ограничений механизмов OCR, и предоставляют полезные функции.

ТекстСнайпер

TextSniper — элегантная маленькая утилита для Mac. Его основная функция, как я уже отмечал, заключается в выполнении оптического распознавания символов в любой части экрана Mac, на которой появляется текст, путем копирования выделенного текста в буфер обмена для вставки в любое место.Вы можете думать об этом как о снимке экрана только с текстом в изображении. Выберите «Захват текста» из набора команд в строке меню или нажмите сочетание клавиш, выберите область экрана, содержащую текст, а затем вставьте текст в документ. Работает как часы.

Вам не нужно заменять содержимое буфера обмена при каждой копии. Параметр «Добавить буфер обмена» позволяет вам продолжать добавлять фрагменты текста в буфер обмена, что может быть особенно полезно при извлечении текста из видео или слайд-презентации.Если вам нужна дополнительная информация о том, что вы скопировали, опция преобразования текста в речь читает скопированный текст. Для тех, кто работает в областях с жаргоном, специфичным для предметной области, есть даже экран предпочтений для добавления пользовательских слов в стандартный лексикон механизма OCR.

TextSniper также предлагает несколько концептуально связанных функций. Он также может считывать QR-коды и штрих-коды, помещая обнаруженный текст в буфер обмена. (Я бы хотел, чтобы он отображал уведомление, которое при нажатии открывало обнаруженные URL-адреса в вашем веб-браузере по умолчанию, точно так же, как сканирование QR-кода на iPhone.) Он также может использовать функцию непрерывной камеры macOS, чтобы использовать iPhone или iPad для фотографирования, сканирования документа или добавления эскиза (см. «Как делать фотографии и сканировать документы с помощью непрерывной камеры в Мохаве», 27 сентября 2018 г.) . Вы можете вызывать все эти функции с помощью пользовательских быстрых клавиш.

Хотя TextSniper работает как в macOS 10.15 Catalina, так и в macOS 11 Big Sur, он может распознавать только английский язык в Catalina. В Big Sur он распознает семь языков — английский, французский, немецкий, итальянский, португальский, испанский и китайский — и разработчики говорят мне, что он может работать с другими языками с латинским алфавитом, но имеет проблемы с диакритическими знаками. Он изначально работает на компьютерах Mac на базе M1.

Признаюсь, мне потребовалось некоторое время, чтобы освободиться от этого извечного разделения между текстом и графикой, но если вы когда-нибудь обнаружите, что перепечатываете что-то или живете со скриншотом, когда на самом деле вам нужен текст внутри, дайте TextSniper попытка. Он стоит 6,99 долларов США за один Mac или 9,99 долларов США за три компьютера Mac при покупке напрямую у разработчика (члены TidBITS экономят 25%), и он доступен в рамках службы подписки Setapp за 9,99 долларов США в месяц. Вы также можете получить его за 9 долларов.99 из Mac App Store.

Фото Поиск

Поиск фотографий Алко Блома основан на той же основной концепции, что и TextSniper, но дает вам другую суперспособность. Функция поиска фотографий, работающая в macOS или iOS/iPadOS, сканирует содержимое вашей библиотеки фотографий и выполняет распознавание текста для всего найденного текста. Как только это будет сделано — а для индексации большой библиотеки потребуется много времени — вы сможете искать фотографии, содержащие заданные строки текста.

Интерфейс для сканирования разных периодов времени немного неуклюж, но он дает вам контроль над тем, когда функция «Поиск фотографий» перегружает процессор при распознавании изображений, особенно на iPhone, где «Поиск фотографий» может сканировать только в том случае, если это текущее приложение.Многие люди, вероятно, захотят извлечь текст из последних фотографий, поэтому имеет смысл предоставить возможность сканирования фотографий только за последнюю неделю или месяц, что происходит быстро. На Mac просто выберите период времени и нажмите «Сканировать фотографии».

В iOS коснитесь значка справа от периода времени, чтобы отсканировать все изображения за этот период времени. Вы также можете нажать значок в левом верхнем углу экрана, чтобы сразу выбрать и обработать одно изображение.

После того, как программа Photos Search отсканирует достаточное количество изображений, вы можете начать поиск в них текста.Оказывается, это очень полезная функция. Впервые я использовал его в дикой природе, когда я был на приеме у врача, и у меня попросили карту вакцинации против COVID-19. Это неудобный размер, и его будет трудно заменить, поэтому я держу его в надежном месте и просто показываю людям его фотографию. Но когда я сделал фотографию, я не подумал назвать ее, добавить в избранное или поместить в специальный альбом. Грубо говоря, я знал, когда был сделан мой последний снимок, но вместо того, чтобы прокручивать все свои изображения с тех пор, я использовал поиск по фотографиям, чтобы найти все последние изображения, содержащие слово «COVID.Это было волшебство. В целом полезным был поиск текста, который появляется на снимках экрана — я делаю много снимков экрана — потому что текст на снимке экрана настолько четкий и легко распознаваемый программой «Поиск фотографий».

Не все поиски работают. Например, я сделал много фотографий людей из моего спортивного клуба «Ровно в полдень» в футболках нашей новой команды. Название клуба видно на майке, но оно изогнуто над логотипом солнца, и многие фотографии немного размыты, потому что iPhone слаб в спортивной фотографии. Поиск по фотографиям не нашел экземпляров «Ровно в полдень» на новых футболках, но с нашим старым логотипом он работал лучше, где слова «Ровно в полдень» были прямыми. (Это то, что он нашел на скриншотах ниже.) С новым логотипом я могу получить несколько лучшие результаты, выполнив поиск только по одному из двух слов. Алко Блом сказал мне, что неспособность распознавать изогнутый текст является ограничением платформы Apple Vision, поэтому мы надеемся, что Apple улучшит ее в будущем.

Даже неполные результаты поиска могут помочь вам перейти к нужным частям вашей библиотеки фотографий для ручного просмотра.Если совпадений слишком много, вы также можете ограничить результаты определенными периодами времени с помощью кнопок вверху.

Найдя изображение, дважды щелкните его, чтобы просмотреть в программе «Фото» на Mac, или коснитесь его, чтобы просмотреть отдельно в версии для iOS. Версия для Mac предлагает кнопки, которые позволяют добавлять ключевые слова к выбранным фотографиям и помещать выбранные фотографии в новый альбом, тогда как версия для iPhone предоставляет только кнопку для создания нового альбома.

Используя меню «Фото» на Mac или кнопки панели инструментов в нижней части экрана iPhone, вы можете воспользоваться другими опциями.Вы можете просматривать (и копировать) распознанный текст, открывать его в новом документе TextEdit (только для Mac) или просматривать местоположение фотографии на картах Apple или Google Maps. Параметр «Пометить как необработанное» позволяет удалить изображение из индекса, что позволит вам повторно отсканировать его, например, после того, как Apple обновит платформу Vision. Версия для iPhone также позволяет удалить изображение или пометить его как избранное с помощью кнопок вверху.

Другие специфичные для iOS функции включают пару расширений, обеспечивающих лучшую интеграцию с другими приложениями.Расширение «Общий доступ» позволяет извлекать текст из фотографий в других приложениях, не добавляя их в библиотеку «Фото», а расширение «Редактирование фотографий» позволяет извлекать текст из изображения при его редактировании в «Фото», избавляя вас от необходимости обращаться к поиску по фотографиям.

Photos Search доступен только в Mac App Store за 12,99 долларов США за пакет версий для Mac и iPhone / iPad, или вы можете получить версию для iOS отдельно в App Store за 4,99 долларов США.

Как насчет живого текста?

Слон в комнате, конечно же, — это функция Apple Live Text, обещанная для macOS 12 Monterey на компьютерах Mac на базе M1 и iOS 15 на устройствах как минимум с процессором A12 Bionic (см. «Десять интересных новых функций, представленных на WWDC 2021, 7 июня 2021 г. и «Реальные системные требования для операционных систем Apple 2021 г.», 11 июня 2021 г.).

Будет ли TextSniper и поиск по фотографиям заблокированы после того, как Live Text станет доступным? Для тех, кто предпочитает более ранние версии macOS или iOS или устройства, которые не соответствуют требованиям Live Text, однозначно нет. TextSniper и поиск фотографий работают хорошо сейчас и будут продолжать работать даже для тех, кто не обновит программное или аппаратное обеспечение в ближайшее время.

Учитывая, что Live Text все еще находится в стадии бета-тестирования, трудно сказать, как он будет в конечном итоге сравниваться с TextSniper и поиском по фотографиям. Теоретически Live Text позволит вам выбирать и копировать текст на изображениях в программах Photos, Preview, Safari и некоторых других приложениях, поэтому он может заменить TextSniper в поддерживаемых приложениях на Mac.Когда Live Text работал, его использование было немного более очевидным, чем TextSniper — вы просто выделяете текст и копируете его, а не делаете своего рода скриншот. Однако в моем быстром тестировании Live Text был привередлив в использовании в Safari, а качество его оптического распознавания символов не всегда было таким хорошим, как у TextSniper.

Live Text также предположительно позволяет вам искать распознанный текст, но эта функция была настолько бессистемной и подверженной сбоям в Spotlight в бета-версии 6 iPadOS 15 на 10,5-дюймовом iPad Pro, что я не мог эффективно сравнить ее с поиском фотографий. Поиск текста в самом приложении «Фотографии» вообще не работал. На MacBook Air с процессором M1 под управлением пятой бета-версии Monterey Spotlight, похоже, не мог искать текст на изображениях в «Фото», хотя находил текст на фотографиях, хранящихся в «Заметках».

Жюри должно оставаться в стороне от функциональности Live Text до тех пор, пока он не будет выпущен, но я чувствую, что TextSniper и поиск по фотографиям будут продолжать обеспечивать более широкую совместимость и больше смежных функций независимо от этого. Поэтому, если вы когда-либо хотели работать с текстом, заключенным в изображения, один или оба из них могут дать вам необходимую мощность.

(PDF) Отслеживание интеграции текста и изображений при чтении газет

Холсанова, Дж. (1999). Olika perspektiv pa språk, bild och

deras samspel. Методологический рефлексор. (Различные

взгляды на мультимодальность. Методологические

соображения) В: Inger Haskå & Carin Sandqvist

(ред. ): Alla tiders språk. Lundastudier i nordisk

språkvetenskap A 55. (стр. 117–126). Лундский университет

Press, Лунд.ISSN: 0347-8971, ISBN: 91-630-8712-X

Холсанова, Дж. (2001). Просмотр картинки и картинка

описание: Два окна на разум. Докторская диссертация

, Когнитивные исследования Лундского университета 83.

ISSN 1101-8453. ISBN 91-856843-76.

Holsanova, J. (2007): Användares interaktion med

multimodala texter. I: Гуннарссон, Б.-Л. & Карлссон,

А.-М. (утг.) Ett vidgat textbegrepp. Раппорт ТеФа 46, с.

41-58. Университет Упсалы: Уппсала. ISSN 1102-9633.

Холсанова, Дж., Холмквист, К. и Холмберг, Н.

(представлено): Информационная графика чтения: роль

пространственной смежности и управления двойным вниманием.

Спецвыпуск журнала «Прикладная когнитивная психология».

Холсанова, Дж. (2008): Дискурс, видение и познание.

Издательство John Benjamins Publishing Company: Амстердам.

ISBN 978 90 272 23777.

Холсанова, Дж., Рам, Х. и Холмквист, К. (2006): Запись

точки и пути чтения на развороте газеты:

Сравнение семиотического анализа с отслеживанием взгляда

измерений. В: Визуальная коммуникация 5 (1), 65-93.

Публикации Sage. ISSN 1470-3572

Джейкоб, Р. Дж. К., и Карн, К. С. (2003). Отслеживание взгляда в

Исследование взаимодействия человека с компьютером и удобства использования:

Готов выполнять обещания.В: J. Hyonä, R. Radach

и H. Deubel (Eds.), The Mind’s Eye: Cognitive and

прикладные аспекты исследования движений глаз (стр. 573-

605). Амстердам: Elsevier Science.

Кирш, Дэвид (2005): Метапознание, распределенное

познание и визуальный дизайн. I: Йоханссон, Петтер и

Гарденфорс, Питер (ред.). Познание, образование и

Коммуникационные технологии. Лоуренс Эрлбаум

Associates.С. 147–179.

Knieper, Thomas (1995): Infographiken: Das visuelle

Informationspotential der Tageszeitung. Verlag

Рейнхард Фишер: Мюнхен.

Кресс, Г. и ван Леувен, Т. (1996). Чтение изображений.

Грамматика визуального дизайна. Лондон: Рутледж.

Левин, Дж. Р., Энглин, Г. Дж., и Карни, Р. Н. (1987). На

эмпирически подтверждены функции картинок в прозе. В

Д. М.Willows & HA Houghton (Eds.),

психология иллюстрации (том 1, стр. 51-85). Новый

Йорк: Спрингер.

Lowe, Richard & Jean-Michel Boucheix (forthc): Отслеживание глаз

как основа для улучшения дизайна анимации.

Доклад на симпозиуме «Отслеживание взгляда как средство для

подробного анализа мультимедийных процессов обучения» –

Часть II, EARLI 2007: Развитие потенциала для

обучения.Будапешт.

Мэйбери, М.Т. (1996): Исследования в области мультимедиа и

Мультимодальный анализ и генерация. Для публикации в

Journal of Artificial Intelligence Review: Special Issue

on the Integration of Natural language and Vision

Processing.

Майер (2005): Принципы управления основными

обработками в мультимедийном обучении: связность,

Сигнализация, избыточность, пространственная смежность и

Принципы временной смежности.В: Майер (ред.)

Кембриджский справочник по мультимедийному обучению (стр.

183-200). Нью-Йорк: Издательство Кембриджского университета.

Майер, Р. Э. (2001). Мультимедийное обучение. Кембридж:

Великобритания: Издательство Кембриджского университета.

Мелин (1999): Gör illustrationerna vad vi tror? I:

Нордиком-Информация № 1-2.99 (том 21). Nordiskt

информационный центр для СМИ и коммуникаций-

forskning. Гетеборгский университет, с.52–60.

Мелин, Ларс (1990): Текст, изображение, лексивидение. En studie i text-

bildsamverkan i en lärobok. Nordiska språk.

Стокгольмский университет.

Мелин, Ларс (1995): Grafisk pyttipanna. Om text och

grafisk form i läroböcker. I: Läroboksspråk. Орд оч

Стиль. Om språk och layout i svenska läroböcker.

Халльгрен и Фаллгрен. Уппсала, с. 77-123.

Мелин, Ларс. 2000: Språk sos syns.Om grafiska formens

samspel medverbalt språk. Språkvårdssamfundets

skrifter 31 Uppsala: Hallgren & Fallgren.

Морено Р. и Майер Р. Э. (1999). Когнитивные принципы

мультимедийного обучения: роль модальности и

смежности. Журнал педагогической психологии, 91,

358-368.

Маллет, К., и Сано, Д. (1995): Проектирование интерфейсов Visual

. Техники, ориентированные на общение.

SunSoft Press, кап. 6: Изображение и представление.

Норд, Андреас (forthc): Hypertext i trädgården. Skrift,

bild och textstruktur i trädgårdshandböcker 1690–

2005. I: Lars Wollin, Anna Saarukka och Ulla Stroh-

Wollin (utg.) Det moderna genombrottet – ocksåkåfr en

4? Studier i svensk språkhistoria 9. Skrifter

из государственного учреждения от Åbo Akademi. 5/2007,

с.189–196.

Нёт, Винфрид (2003). Пресс-фотографии и подписи к ним.

In H. Lönnroth (Ed.): Från Närpesdialekt to EU-

svenska (стр. 169–188). Тампере: Университет Тампере

Press.

Петтерссон, Гертруда (1997): Uppslagsböckerna och

världen. Rapport om en pilotundersökning. Свенск

сакпроса 11. Лунд.

Петтерссон, Гертруда (2000): Håller bilden på att ta över?

En studie av samspelet mellan text och bild i

uppslagsböcker under 1900-talet.Свенск сакпроса.

Institutionen for nordiska språk. Лунд.

Петтерссон, Р. (2004): Бюллетень и форма для

информационного дизайна. Студенческая литература AB: Лунд.

Петтерссон Р. и Стрэнд Л. (2004 г.): Nyhetsgrafik.

Мелардаленс Хёгскола. Institutionen for Innovation,

Design och Produktutveckling: Eskilstuna.

Поззер, Л.Л., и Рот, В.М. (2003). Распространенность,

функция и структура фотографий в школьных

учебниках биологии.

Оставить комментарий

Ваш адрес email не будет опубликован.