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.
-
Instal
tesseract-ocr
ke dalam sistem Anda:sudo apt-get install tesseract-ocr
-
Unduh
eng.traineddata
data pelatihan dari https://github.com/tesseract-ocr/tessdata dan pindahkan ke folder root proyek. -
Tambahkan ketergantungan di bawah ini ke proyek Anda:
<dependency>
<groupId>net.sourceforge.tess4j</groupId>
<artifactId>tess4j</artifactId>
<version>3.2.1</version>
</dependency>
- 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";
}
}