rust ocr with python [5]

wangki·2025년 11월 5일

parking_server

목록 보기
5/5

개요

client와 테스트를 진행하며 추론이 잘 되지 않는 이슈가 발생하였다. 따라서 postman을 활용해 실제 추론이 잘 되고 있는지 체크하는 내용이다.
추가로 .env파일을 읽으면서 발생한 오류도 기록하였다.

내용

클라이언트로부터 넘어오는 이미지를 ocr 처리한 결과가 정확하지 않아서 직접 해당 이미지를 받아서 처리하였다. 테스트를 위해서 base64로 인코딩 후 postman을 활용해 rust parking server로 요청하도록 하였다.

use std::{fs, io::{Read, Write}};
use base64::prelude::*;

fn main() {
    let bytes = fs::read("D:\\work\\rust\\test\\base64_test\\assets\\license_plate.png").unwrap();
    let encoded = BASE64_STANDARD.encode(bytes);
    let mut file = fs::File::create("./test.txt").unwrap();
    file.write_all(encoded.as_bytes()).unwrap();

    println!("{}", encoded);
}

print로 출력하여 복붙할 생각이었는데 생각보다 너무 길어서 terminal을 넘어간다. 따라서 txt 파일로 생성하였다.

base64로 인코딩된 문자열을 얻은 후 아래 포맷으로 보내주었더니

{
  "gate_id": 10,
  "timestamp": 현재시간,
  "img": base64 encoding 문자열 
}

정상적으로 추론이 되었다.

인 메모리 캐시에 현재 입차한 차량 정보가 잘 저장이 된다.

env 이슈

.env에 노출되면 안 되는 데이터를 담아서 사용하는데 어느 순간 잘 안되는 이슈가 발생했다.

    println!("Parking server init start!!!!!!!!");
    dotenv().ok();
    let db_con_str = env::var("DB_CON_STR").unwrap();
    let broker = env::var("BROKER_URL").unwrap();

아래 처럼 로그를 찍었더니

위처럼 패닉이 발생했다. 상당히 당황스러웠다. 해결 방법은 정말로 어이없게도 BROKER_URL의 값 옆에 띄어쓰기가 되어 있었다...
아주 손쉽게 해결이 되어서 다행이다. 이렇게 기록을 남겨서 나중에 사소한 문제가 생겼을 때 찾아보면 좋을 것 같다.

결론

클라와 서버간의 통신 및 로직 검증 테스트 단계에서 이슈가 발생할 수 있는 것은 당연하다. 한쪽이 확실하게 검증을 한다면 문제를 빠르게 파악할 수 있어 오히려 서로에게 윈윈이 되는 것 같다.

테스트를 진행하면서 로깅이 마음에 들지 않았다. 그리고 추론을 잘못했을 경우 인 메모리 캐시를 어떤 식으로 무효화할지 좀 더 고민해 봐야겠다.

0개의 댓글