知方号

知方号

基于QT/C++图片文字提取器(免费+开源)<图片文字最新图片>

基于QT/C++图片文字提取器(免费+开源)

一、实现背景

        国外一开源,国内就自主,甚至最著名的大学,也这么NO FACE,真的让人无语至极。图片文字提取功能,如此简单功能,10多年前就有人实现了,而且开源让大家免费使用,有些人屏蔽国外下载地址,然后自己换皮,挂在网上就开始收费。基于这个背景,怎么能忍,果断开源所有源代码。

二、实现平台

        1、win10-64

        2、Qt 5.14.1 (MSVC 2017, 64 bit)

        3、引用开源库tessdata

三、运行程序(绿色安装包下载地址)演示

在文本类型种选择“中文/英文”,然后选择图片文件,即可完成图片问题提取

四、核心源码(源码包下载地址)

1、mainwindow.h

#ifndef MAINWINDOW_H#define MAINWINDOW_H#include #include "tesseract/baseapi.h"#include "tesseract/strngs.h"#include "leptonica/allheaders.h"QT_BEGIN_NAMESPACEnamespace Ui { class MainWindow; }QT_END_NAMESPACEclass MainWindow : public QMainWindow{ Q_OBJECTpublic: MainWindow(QWidget *parent = nullptr); ~MainWindow();protected: void paintEvent(QPaintEvent *event) override;private: Ui::MainWindow *ui; tesseract::TessBaseAPI *api = nullptr; QPixmap pixmap;private slots: void on_comboBox_currentIndexChanged(int index); void on_pushButton_clicked();};#endif // MAINWINDOW_H

2、mainwindow.cpp

#include "mainwindow.h"#include "ui_mainwindow.h"#include #include #include #include MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent) , ui(new Ui::MainWindow){ ui->setupUi(this); api = new tesseract::TessBaseAPI(); if (api->Init("D:/mycode/testDemo/ocrtest/ocrlib/tessdata", "eng")) { QMessageBox::warning(0,"Error","Could not initialize tesseract"); exit(1); }}MainWindow::~MainWindow(){ api->End(); delete ui;}void MainWindow::on_comboBox_currentIndexChanged(int index){ QString language; if(index == 1) language = "chi_sim"; else language = "eng"; if (api->Init("D:/mycode/testDemo/ocrtest/ocrlib/tessdata", language.toStdString().data())) { QMessageBox::warning(0,"Error","Could not initialize tesseract"); exit(1); }}void MainWindow::on_pushButton_clicked(){ QString filename = QFileDialog::getOpenFileName(nullptr, "Image", "", ""); if(filename.isEmpty()){ QMessageBox::warning(0,"Error","no find image"); return ; } ui->lineEdit_path->setText(filename); // 加载图片,创建一个QPixmap对象 pixmap.load(filename); //QPixmap pixmap(filename); // 替换为你的图片路径 // 在QLabel上显示图片 ui->label_picture->setPixmap(pixmap.scaled(ui->label_picture->size(), Qt::IgnoreAspectRatio)); //ui->label_picture->setPixmap(pixmap); // 显示标签 ui->label_picture->show(); QTextCodec *code = QTextCodec::codecForName("GB2312"); std::string str = code->fromUnicode(filename).data(); const char* ch = str.c_str(); Pix *image = pixRead(ch); api->SetImage(image); char *outText = api->GetUTF8Text(); ui->textEdit_text->setText(QString(outText)); delete [] outText; pixDestroy(&image);}void MainWindow::paintEvent(QPaintEvent *event){ if(!pixmap.isNull()){ QSize centralSize = ui->centralwidget->size(); int height = centralSize.height()-ui->statusbar->height()-ui->comboBox->height()-18; int width = centralSize.width()/2-9; // 在QLabel上显示图片 ui->label_picture->setPixmap(pixmap.scaled(QSize(width,height), Qt::IgnoreAspectRatio)); // 显示标签 ui->label_picture->show(); }}

 3、mainwindow.ui

MainWindow 0 0 522 453 图片文字提取 :/camel.png:/camel.png 100 0 0 0 0 0 6 0 0 background-color: rgb(197, 197, 197); true Qt::AlignCenter 文本类型 英文 中文 选择文件

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至lizi9903@foxmail.com举报,一经查实,本站将立刻删除。