Closed Selenium39 closed 1 year ago
extern crate serde_derive; extern crate rand; use reqwest; use serde_derive::{Deserialize, Serialize}; use rand::seq::SliceRandom; // Import the SliceRandom trait. #[derive(Deserialize, Serialize)] struct ApiResponse { ParsedResults: Vec<ParsedResult>, SearchablePDFURL: Option<String>, OCRExitCode: Option<i32>, } #[derive(Deserialize, Serialize)] struct ParsedResult { ParsedText: String, } const API_KEYS: [&str; 7] = ["fca5393dd988957", "K84490092188957","9f368da3dd88957","1f666673b488957","ec2a41c6a188957","3c5a17b91d88957","d35acb001e88957"]; // Multiple API keys. const API_URL: &str = "https://api.ocr.space/parse/image"; const TEST_IMAGE_URL: &str = "http://dl.a9t9.com/apitest/testimage.png"; fn main() -> Result<(), Box<dyn std::error::Error>> { let client = reqwest::blocking::Client::new(); // Randomly selecting an API key from the list. let selected_api_key = API_KEYS.choose(&mut rand::thread_rng()).unwrap_or(&API_KEYS[0]); let params = [ ("apikey", *selected_api_key), ("url", TEST_IMAGE_URL), ("language", "eng"), ("isOverlayRequired", "false"), ("iscreatesearchablepdf", "true"), ]; let response: ApiResponse = client.post(API_URL).form(¶ms).send()?.json()?; if let Some(parsed_result) = response.ParsedResults.get(0) { println!("{}", parsed_result.ParsedText); } Ok(()) }
reqwest = { version = "0.11", features = ["blocking", "json"] } serde = "1.0" serde_json = "1.0" serde_derive = "1.0" rand = "0.8"