Command Palette

Search for a command to run...

Перекос ломается OCR задолго до того, как это сделает разрешение

Перекос ломается OCR задолго до того, как это сделает разрешение

T
Toolz Team
|Oct 21, 2026|18 Мин. читать
Предпочитайте Toolz.dev в Google

Часть коллекции Инструменты ИИ

Изображение ИИ в текст (OCR)

Извлеките текст из фотографии или скриншота на 13 языках с помощью Tesseract OCR, работающего в вашем браузере. Бесплатно, без регистрации, и ваше изображение никогда не загружается.

Используйте Изображение ИИ в текст (OCR)

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

TL;DR: Tesseract читает чисто рендеримый текст, пока две конкретные вещи не пойдут не так. Наклон первый: от 0 до 3 градусы перекоса давали 0% частоту ошибок, 5 градусов дали 2,9%, 12 градус 16,7%, 20 градус 32,4%. Размер второй, и это скорее скала, а не наклон: текст остался идеальным до высотой заглавной около 7 пикселей, а затем свернулся до 85,3% ошибок при 5,8 пикселях. Низкая контрастность, размытие и сильное сжатие JPEG едва зафиксированы. Выпрямите картинку, прежде чем делать что-либо еще. выше конвертер изображений в текст Запускает движок в браузере, поэтому изображение никогда не загружается.

Как были произведены эти цифры?

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

Метрика — частота ошибок символов: расстояние Левенштейна между тем, что было сказано изображением, и тем, что возвращает движок, деленный на длину истины. 2% ошибка в строке из пятидесяти символов — это один неверный символ. Текст состоял из трех строк, микширующих прозу, номер счета, дату, сумму валюты, адрес электронной почты и номер телефона, потому что ошибки, которые имеют значение на практике, происходят во втором типе контента, а не во втором.

Одно оговорка принадлежит, а не похоронена. Это визуализированные изображения, а не фотографии. Каждая из них изолирует одну переменную, что является единственным способом приписать неуправляемость причиной, но реальная фотография страницы приходит сразу с несколькими: легким наклоном, неравномерным освещением поперек складки, размытием движения на одном краю и камерой, которая обострила все перед сохранением. Поэтому приведенные ниже пороги являются лучшими. Фотография, которая находится на пределе двух осей, будет хуже, чем предполагает любой номер.

Двигатель представляет собой модель LSTM Tesseract 4 через TesserAct.js, именно это инструмент работает, поэтому это не цифры из другой системы.

Сколько перекоса слишком много?

От трех до пяти градусов, что меньше наклона, чем вы заметите.

ротационная Частота ошибок Сообщаемый доверие
0 градусов 0,0% 95
1 градус 0,0% 95
2 градуса 0,0% 95
3 градуса 0,0% 94
5 градусов 2,9% 91
8 градусов 7,8% 82
12 градусов 16,7% 70
20 градусов 32,4% 66

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

На 5 градусах ошибки были маленькие и дорогие. «Дата датировано» вернулись как «датаq" и «тотал» как «тотг»». Оба представляют собой одну букву внутри слова, которое человек прочитал бы прямо, и оба сидели рядом со номером счета и суммой валюты, которую человек собирался скопировать без проверки.

Телефон, который держится вручную над страницей, обычно выбывает более чем на пять градусов. Это единственная вещь, которую стоит исправить, прежде чем что-либо запускать, и исправление бесплатное: поворачивайте изображение до тех пор, пока линии не станут ровными.

Насколько маленьким может быть текст, прежде чем OCR не будет срабатывать?

Меньше, чем вы ожидаете, вплоть до того, что он полностью перестает работать.

Ширина изображения Высота заглавной буквы Частота ошибок Уверенность
1600 пикселей ~29 пикселей 0,0% 95
800 пикселей ~14 пикселей 0,0% 95
533 пикселей ~10 пикселей 0,0% 92
400 пикселей ~7 пикселей 0,0% 84
320 пикселей ~6 гардероб 85,3% 41
240 пикселей ~4 пикселей 100,0% 0

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

Это скала, а не градиент, и он меняет совет. "Использовать максимальное разрешение, которое у вас есть, не является ошибочным, но он описывает проблему, которой нет у большинства снимков. Скриншот веб-страницы, фото вывески, изображение телефона с печатной буквой: все они имеют гораздо более семи пикселей высоты буквы. Что чаще всего у них есть, так это наклон.

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

Низкая контрастность испортит чтение?

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

Серый текст на #8A8A8A на сером фоне #BDBDBD Читал обратно с частотой ошибок 0,0% и достоверностью 95, идентичную черному на белом. Гауссовое размытие в три пикселя по всему изображению дало 0,6%. JPEG, сохраненный при качестве 25 и масштабированная до половинного размера, дал 0,0%.

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

Таким образом, полезная версия совета по освещению уже узкая, чем обычная. Даже освещение имеет значение. Яркое освещение не делает. Тусклое, равномерно освещенное фото страницы бьет яркую с тенью посередине.

Почему двухколоночная схема выходит в затруднительном положении?

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

Я отрисовал два блока текста рядом, по три строки в каждой из общих базовых линий. Результат вернулся чересстрочным:

LEFT ONE RIGHT ONE LEFT TWO RIGHT TWO LEFT THREE RIGHT THREE

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

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

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

Можно ли читать почерк?

Ненадежно, и граница заключается в том, касаются ли буквы, а не о том, выглядят ли они неформальными.

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

купленный Частота ошибок Уверенность
комикс без мс 0,0% 95
кисть скрипт мт 5,9% 67
Снелл круглая 20,6% 55

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

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

Если вам нужно читать почерк, это не тот инструмент, как и любой другой передний конец Tesseract. Эта работа нуждается в модели, обученной по почерку.

Какие персонажи ошибаются?

Буквы, похожие на цифры, и направление согласуется.

Я вывел строку из обычных подозреваемых и прочитал ее обратно:

truth:  O0 l1I 5S 8B 2Z rn/m
read:   00 111 5S 8B 2Z rn/m

Столица О стала нулем. Lictional L и Capital I стали цифрой 1. Пары людей беспокоятся больше всего, 5 против S и 8 против B, вернулись правильно, как и RN против M.

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

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

Что вам говорит показатель доверия?

Примерно как прошла страница, а не то, правильно ли, что вам небезразлично.

Инструмент показывает, что среднее слово «доверие» к двигателю как высокое, среднее или низкое, с высоким уровнем 85 и выше. По сравнению с измеренными частотами ошибок, что отображение в целом разумно и оптимистично на краю:

случай Уверенность Этикетка Реальная частота ошибок
Чистый 95 значительный 0,0%
5 градусов перекоса 91 значительный 2,9%
12 градусов перекоса 70 средние 16,7%
320 пикселей в ширину 41 низший 85,3%
Связанный скрипт 55 низший 20,6%

Низкая оценка — надежное предупреждение: все, что набрало менее 60 лет, было действительно сломано. Высокая оценка является более слабым доказательством, чем кажется. Случай с 5-градусной набрал 91 балл, что интерфейс называет высоким, при этом тихо извращая слово в строке счета.

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

Сколько стоит скачать каждый язык?

От 0,67 до 2,82 мегабайт один раз, а затем кэшируется.

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

знамение скачивать знамение скачивать
английский 2,82 МБ хинди 1,32 МБ
русский язык 2,56 МБ бенгальский 1,31 МБ
испанский 2.00 МБ корейский 1,50 МБ
японский 1,94 МБ немецкий 1,27 МБ
Китайский (упрощенный) 1,64 МБ португальский 1,33 МБ
арабский 1,58 МБ итальянский 1,58 МБ
французский язык 0,67 МБ

Все тринадцать вместе составляют около 21 МБ, что меньше одной фотографии с современного телефона. Распространенное предположение о том, что китайский или японский языки должны быть огромными, здесь не имеет значения: упрощенные китайцы составляют 1,64 МБ, меньше, чем на английском, потому что в файле хранятся модель, а не глифическая библиотека.

Почему первый запуск медленнее второго?

Потому что первый загружает и запускает движок, а второй просто читает.

Первый запуск языка получает сборку WebAssembly Tesseract, извлекает файл данных языка и инициализирует рабочий. После этого рабочий остается в живых на странице и файл данных кэшируется браузером, поэтому сразу же начинается второе изображение на том же языке. Переключение языков повторно инициализирует Worker, но не загружает повторно уже что-то уже полученное.

Само признание быстрое. На этой машине чтение трехстрочного тестового изображения заняло 186 миллисекунд для чистой версии и от 70 до 125 миллисекунд для поврежденных, и все это на уже работающем рабочем месте. Для полной страницы текста ожидайте секунду или две, а не десятую доли, но первое ожидание, которое вы заметите, это настройка, а не чтение.

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

Что нужно сделать с изображением перед запуском OCR?

Три вещи в этом порядке, и первая важнее, чем две другие вместе взятые.

  1. Выпрямите его. Поворачивайте до тех пор, пока строки текста не станут ровными. Три градуса бесплатно, пять нет.
  2. Обрезать текст. Это устраняет проблему с столбцом, удаляет фон, который сегментатор должен отклонить, и делает текст большей долей кадра.
  3. Оставьте все остальное в покое. Не точить, не повышать контраст, не превращать в черно-белую вручную. Двигатель бинарных в любом случае, и фильтр заточки добавляет звон в кромках букв, которых раньше не было.

Стоит добавить, а не снять, а это разрешение, но только если вы находитесь рядом с полом. Переход от высоты заглавной 7 пикселей до 14 пикселей ничего не изменил в измерениях. Переход с 6 на 7 все изменил.

Когда OCR не тот инструмент?

Когда изображение не текста, когда текст написан от руки, а когда вам нужна вещь, которую можно искать, а не блок символов.

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

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

Почему это работает в браузере?

Потому что фотографии, которые люди прокладывают через OCR, — это те, которые они меньше всего хотели бы загрузить.

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

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

Две вещи, которые этот сайт пока не делает, и которые принадлежат одному конвейеру: выпрямление сфотографированной страницы и обрезка ее до текста. Оба должны происходить в любом просмотре, который у вас уже есть, что является единственным неудобным швом в рабочем процессе выше. Что будет после этого: если источником является фотография нескольких страниц, Руководство по объединению изображений Занимается сбором результатов.

Связанные статьи

Резюме может держать каждое число и при этом быть неправым

Резюме может держать каждое число и при этом быть неправым

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

Инструменты ИИ·
T
Toolz Team·21 окт.·17m
Переформулированная цитата — это неверная цитата

Переформулированная цитата — это неверная цитата

Один отрывок, три тона, измеряемый: каждый раз количество абзацев и длина сохраняются, от 44 до 55% слов изменились, а цитируемое предложение было переформулировано во всех трех. То, что хранит парафраз, и что он тихо падает.

Инструменты ИИ·
T
Toolz Team·21 окт.·16m
Двадцать имен в минуту — это легкая часть

Двадцать имен в минуту — это легкая часть

Два измеренных прогона: по двадцать имен, одно из которых объясняет каждое имя и другое, а также предложение для бухгалтерской практики, принадлежащей бухгалтерской компании FTSE 100. Что проверить, прежде чем выбрать.

Инструменты ИИ·
T
Toolz Team·21 окт.·17m

Comments

0 comments

0/2000 characters

No comments yet. Be the first to share your thoughts!