MongoDB
 sql >> Teknologi Basis Data >  >> NoSQL >> MongoDB

Bagaimana cara menyimpan gambar byte[] di mongodb untuk proses Doocr

Karena Anda menggunakan pegas. Anda dapat menggunakan MultipartFile untuk mendapatkan file di pengontrol Anda dan kemudian gunakan Binary dari org.bson untuk menyimpan file ke MongoDB , Jika ukuran gambar Anda <16 MB (jika ukuran gambar> 16 MB Anda dapat menggunakan GridFs ).

Anda hanya perlu menambahkan satu ketergantungan ke proyek Anda - spring-data-mongoDB

Mari kita ambil contoh koleksi Pengguna yang terlihat seperti ini:

@Document
public class User {
    @Id
    private String id;
    
    private String name;
    private Binary image;
    // getters and setters
}

Di sini Anda dapat melihat Binary image yang mewakili file gambar Anda.

Sekarang buat repositori untuk koleksi Pengguna ini menggunakan MongoRepository

public interface UserRepository extends MongoRepository<User, String>{

}

Buat Controller untuk tujuan demo. Gunakan @RequestParam MultipartFile file untuk mendapatkan file ke pengontrol Anda, dapatkan byte dari file dan setel ke objek pengguna user.setImage(new Binary(file.getBytes())); contoh lengkapnya di bawah ini:

@RestController
public class UserController {
    @Autowired
    private UserRepository userRepository;

    @PostMapping("/users")
    User createUser(@RequestParam String name, @RequestParam MultipartFile file) throws IOException {
        User user = new User();
        user.setName(name);
        user.setImage(new Binary(file.getBytes()));
        
        return userRepository.save(user);
    }

    @GetMapping("/users")
    String getImage(@RequestParam String id) {
        Optional<User> user = userRepository.findById(id);
        Encoder encoder = Base64.getEncoder();
        
        return encoder.encodeToString(user.get().getImage().getData());

    }
}

Mulai server dan tekan titik akhir seperti yang ditunjukkan pada tangkapan layar tukang pos di bawah ini

Data Anda disimpan di mongoDb di BinData format dan untuk mendapatkan data dari database silakan merujuk ke getImage metode kode di atas.

EDIT:

Penanya pertanyaan menggunakan tess4j perpustakaan untuk mengekstrak teks dari gambar dan doOCR adalah metode di perpustakaan ini. Saya telah mengikuti langkah-langkah ini untuk mengekstrak teks dari gambar di aplikasi boot musim semi saya.

  1. Instal tesseract-ocr ke dalam sistem Anda:

    sudo apt-get install tesseract-ocr

  2. Unduh eng.traineddata data pelatihan dari https://github.com/tesseract-ocr/tessdata dan pindahkan ke folder root proyek.

  3. Tambahkan ketergantungan di bawah ini ke proyek Anda:

   <dependency>
        <groupId>net.sourceforge.tess4j</groupId>
        <artifactId>tess4j</artifactId>
        <version>3.2.1</version>
   </dependency>
  1. Tambahkan kode di bawah ini ke proyek yang ada:
@GetMapping("/image-text")
String getImageText(@RequestParam String id) {
    Optional<User> user = userRepository.findById(id);
    ITesseract instance = new Tesseract();
    try {
        ByteArrayInputStream bais = new ByteArrayInputStream(user.get().getImage().getData());
        BufferedImage bufferImg = ImageIO.read(bais);
        String imgText = instance.doOCR(bufferImg);
        return imgText;
    } catch (Exception e) {
        return "Error while reading image";
    }
}


  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. MongoDB:Apa gunanya menggunakan MapReduce tanpa paralelisme?

  2. Lima Tips untuk Hosting MongoDB yang Lebih Baik di Azure

  3. Bagaimana cara menyusun string json ke dokumen bson untuk menulis ke MongoDB?

  4. Keluar dengan kode 8 Contoh aplikasi meteor

  5. Cara terbaik untuk menyimpan waktu dalam sehari di Mongoose