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

Как мы делаем программное чтение штрих-кода, который захватывается с помощью камеры мобильного телефона? Например, как это сделать с помощью iPhone или Android или Java ME? Нам нужно отдельное оборудование для чтения штрих-кода или мы можем манипулировать изображениями?

6 ответов


Google сделал это невероятно просто с их "Зебре" библиотеки. Они поддерживают сканирование с помощью изображений на следующих платформах:

  • в J2SE
  • Android

и другие портировали кому:

  • для J2ME
  • используется CSharp
  • CPP
  • Rim
  • iPhone
  • ошибка

Как уже упоминалось, на Android вы также можете использовать намерение чтобы вызвать считыватель штрих-кодов с чем-то вроде:

public Button.OnClickListener mScan = new Button.OnClickListener() {
    public void onClick(View v) {
        Intent intent = new Intent("com.google.zxing.client.android.SCAN");
        intent.putExtra("SCAN_MODE", "ONE_D_MODE");
        startActivityForResult(intent, 0);
    }
};

public void onActivityResult(int requestCode, int resultCode, Intent intent) {
    if (requestCode == 0) {
        if (resultCode == RESULT_OK) {
            String contents = intent.getStringExtra("SCAN_RESULT");
            String format = intent.getStringExtra("SCAN_RESULT_FORMAT");
            // Handle successful scan
        } else if (resultCode == RESULT_CANCELED) {
            // Handle cancel
        }
    }
}

штрихкоды можно прочитать через анализ взятый от камер телефона.

хорошо известное осложнение заключается в том, что камеры с фиксированной фокусировкой (например, на старых айфонах 2G/3G и некоторых андроидах) не могут принимать снимки в фокусе на короткие расстояния. Для борьбы с этим, особое "deconvoluting" алгоритмы должны быть использованы - и в последний раз я проверил, это не была часть по зебре.

некоторые реализовали решения - я знаю о следующих приложениях для iPhone, которые могут читать UPCs с камерой с фиксированной фокусировкой: pic2shop (Benoit Maison / Vision Smarts), RedLaser (Occipital) и ShopSavvy (Big в Японии) - проверьте их, и я думаю, что все они имеют доступные SDK для заинтересованных сторон.


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

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


Я бы рекомендовал выбрать решение, которое также декодирует штрих-коды в размытых изображениях. Есть много недорогих телефонов Android, которые имеют только фиксированные камеры фокусировки и требуют более сложных решений для обработки изображений, чем двоичный порог, который предлагают программные решения, перечисленные выше. Примеры таких более продвинутых решений включают redlaser или SCANDIT сканер штрих-кода SDK.

SCANDIT SDK очень легко интегрировать и поставляется с бесплатное издание сообщества. Существует также API продукта это делает его простым для преобразования номеров штрих-кодов в названия продуктов.

отказ от ответственности: я один из соучредителей Scandit.


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

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

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


просто для обновления всех новичков, ищущих ответ на этот вопрос, Google now предлагает API Обнаружения Штрих-Кодов через сервисы Google Play для упрощения сканирования штрих-кода с помощью камеры телефона. Больше не нужно зависеть от сторонних API.