Проблема выравнивания текста с OCR - PullRequest
0 голосов
/ 26 февраля 2020

Я создал приложение для сканирования текста с изображения и записи его в текстовое представление, оно успешно работало для одного столбца данных, но в случае нескольких столбцов оно читало столбцы случайным образом и не печатало так же, как табличное представление, которое оригинальное изображение появляется. Я использовал API Google Vision и проанализировал текст в SparseArray типа textblock(SparseArray<Textblock>).

Вывод на экран отсканированного изображения: Output screenshot of the scanned image

 Frame frame=new Frame.Builder().setBitmap(bitmap).build();
                SparseArray<TextBlock> textBlocks = recognizer.detect(frame);
                String blocks = "";
                String lines = "";
                String words = "";
                for (int index = 0; index < textBlocks.size(); index++) {
                    //extract scanned text blocks here
                    TextBlock tBlock = textBlocks.valueAt(index);
                    blocks = blocks + tBlock.getValue() + "\n" + "\n";
                    for (Text line : tBlock.getComponents()) {
                        //extract scanned text lines here
                        lines = lines + line.getValue() + "\n";
                        for (Text element : line.getComponents()) {
                            //extract scanned text words here
                            words = words + element.getValue() + ", ";
                        }
                    }
                }
                if (textBlocks.size() == 0) {
                    etresult.setText("Scan Failed: Found nothing to scan");
                } else {
                    etresult.setText(etresult.getText() + "Blocks: " + "\n");
                    etresult.setText(etresult.getText() + blocks + "\n");

                    saveToInternalStorage(bitmap);
                }

1 Ответ

0 голосов
/ 26 февраля 2020

После прохождения кода выше я вижу, что OCR должен сканировать изображение и обнаруживать текст, а не выравнивание текста, как таблицы и его столбцы. Но вы можете распознать выравнивание, используя Ограничивающие прямоугольники, которые дают верхний левый, верхний правый, нижний левый и нижний правый координаты. Пожалуйста, go через документацию по облачному API Google. https://cloud.google.com/vision/docs/ocr

...