Selenium39 / rust-shot

截图+OCR+ChatGPT
0 stars 0 forks source link

ocr #1

Closed Selenium39 closed 1 year ago

Selenium39 commented 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(&params).send()?.json()?;

    if let Some(parsed_result) = response.ParsedResults.get(0) {
        println!("{}", parsed_result.ParsedText);
    }

    Ok(())
}
Selenium39 commented 1 year ago
reqwest = { version = "0.11", features = ["blocking", "json"] }
serde = "1.0"
serde_json = "1.0"
serde_derive = "1.0"
rand = "0.8"