Merging ocr into master

This commit is contained in:
Gross 2019-09-27 10:08:52 +02:00
commit 31ecad7798
12 changed files with 310 additions and 99 deletions

22
NGCC/src/ocr/Copie.java Normal file
View File

@ -0,0 +1,22 @@
package ocr;
import java.awt.image.BufferedImage;
public class Copie {
ImagesCopie base;
public Copie(BufferedImage img) {
this.base = new ImagesCopie(img);
}
public ImagesCopie getBase() {
return base;
}
public void setBase(ImagesCopie base) {
this.base = base;
}
}

View File

@ -1,26 +1,40 @@
package ocr_orm; package ocr;
import java.awt.image.BufferedImage; import java.awt.image.BufferedImage;
import java.io.File; import java.io.File;
import java.io.IOException; import java.io.IOException;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.HashMap; import java.util.HashMap;
import java.util.List; import java.util.List;
import java.util.Map;
import org.apache.pdfbox.pdmodel.PDDocument; import org.apache.pdfbox.pdmodel.PDDocument;
public class ControleurOCR {
public HashMap<String,String> getNumNote(String path){ public class GestionnaireCopies {
private List<Copie> listeCopie;
private List<BufferedImage> copies;
public GestionnaireCopies(String chemin) {
copies = createImagesCopies(chemin);
listeCopie = new ArrayList<Copie>();
for(BufferedImage i : copies)
{
listeCopie.add(new Copie(i));
}
}
public List<BufferedImage> createImagesCopies(String path){
PdfToImage pdfAnalyzer = new PdfToImage(); PdfToImage pdfAnalyzer = new PdfToImage();
File pdfFile; File pdfFile;
PDDocument document = null; PDDocument document = null;
//LISTE DES IMAGES //LISTE DES IMAGES
ArrayList<BufferedImage> images = new ArrayList<>(); // stockera les images (resultat) List<BufferedImage> images = new ArrayList<>(); // stockera les images (resultat)
//HASHMAP POUR LE CSV
HashMap<String,String> listeNumNote = new HashMap<String, String>();
// CONVERT PAGES TO IMAGES // CONVERT PAGES TO IMAGES
try { try {
String pdfFilesDirectory = "C:\\Users\\ph807242\\eclipse-workspace\\PT\\pdf\\"; String pdfFilesDirectory = "C:\\Users\\ph807242\\eclipse-workspace\\PT\\pdf\\";
@ -37,10 +51,20 @@ public class ControleurOCR {
} }
//LISTE DES IMAGES COMPRENANT L'IMAGE DE LA NOTE ET DU NUM ETUDIANT //LISTE DES IMAGES COMPRENANT L'IMAGE DE LA NOTE ET DU NUM ETUDIANT
ListeImageNGCC liNGCC = new ListeImageNGCC(images);
return images;
listeNumNote = liNGCC.doOCR();
return listeNumNote;
} }
public Map<String,String> createHashMapforCSV(){
Map<String,String> temp = new HashMap<>();
for(Copie c : listeCopie)
{
temp.put(c.getBase().gethMapImgs().get("NumEtu").getDescription(), c.getBase().gethMapImgs().get("Note").getDescription());
}
return temp;
}
} }

View File

@ -0,0 +1,34 @@
package ocr;
import java.awt.image.BufferedImage;
import java.util.Map;
public class ImagesCopie {
private Map<String,Img> hMapImgs;
public ImagesCopie(BufferedImage imgOriginale) {
hMapImgs = Rogneur.createHMapImgs(imgOriginale);
}
public void applyOcrForEach() {
for(String s : hMapImgs.keySet())
{
hMapImgs.get(s).applyOcrImg();
}
}
public Map<String, Img> gethMapImgs() {
return hMapImgs;
}
public void sethMapImgs(Map<String, Img> hMapImgs) {
this.hMapImgs = hMapImgs;
}
}

37
NGCC/src/ocr/Img.java Normal file
View File

@ -0,0 +1,37 @@
package ocr;
import java.awt.image.BufferedImage;
public abstract class Img {
BufferedImage img;
String description;
public Img(BufferedImage img) {
this.img = img;
}
public abstract void applyOcrImg();
public BufferedImage getImg() {
return img;
}
public void setImg(BufferedImage img) {
this.img = img;
}
public String getDescription() {
return description;
}
public void setDescription(String description) {
this.description = description;
}
}

19
NGCC/src/ocr/ImgNote.java Normal file
View File

@ -0,0 +1,19 @@
package ocr;
import java.awt.image.BufferedImage;
public class ImgNote extends Img{
public ImgNote(BufferedImage img) {
super(img);
// TODO Auto-generated constructor stub
}
@Override
public void applyOcrImg() {
setDescription(OCR.applyOcrNumber(getImg()));
}
}

View File

@ -0,0 +1,18 @@
package ocr;
import java.awt.image.BufferedImage;
public class ImgNumEtu extends Img{
public ImgNumEtu(BufferedImage img) {
super(img);
}
@Override
public void applyOcrImg() {
setDescription(OCR.applyOcrNumber(getImg()));
}
}

View File

@ -1,4 +1,4 @@
package ocr_orm; package ocr;
import java.awt.image.BufferedImage; import java.awt.image.BufferedImage;
@ -9,13 +9,13 @@ public class OCR {
public String getOCR(BufferedImage img) { public static String applyOcrNumber(BufferedImage img) {
//FAIRE L'OCR //FAIRE L'OCR
Tesseract tesseract = new Tesseract(); Tesseract tesseract = new Tesseract();
String str=""; String str="";
try { try {
tesseract.setOcrEngineMode(2); tesseract.setOcrEngineMode(2);
tesseract.setTessVariable("tessedit_char_whitelist", "A-Za-z1-9"); tesseract.setTessVariable("tessedit_char_whitelist","0-9");
str=tesseract.doOCR(img); str=tesseract.doOCR(img);
} catch (TesseractException e) { } catch (TesseractException e) {

View File

@ -1,4 +1,4 @@
package ocr_orm; package ocr;
import java.awt.image.BufferedImage; import java.awt.image.BufferedImage;
import java.io.File; import java.io.File;
import java.io.IOException; import java.io.IOException;

43
NGCC/src/ocr/Rogneur.java Normal file
View File

@ -0,0 +1,43 @@
package ocr;
import java.awt.image.BufferedImage;
import java.util.HashMap;
import java.util.Map;
public class Rogneur {
// Retourne une hashmap contenant une image et la description de son contenu
public static Map<String, Img> createHMapImgs(BufferedImage imgOriginale) {
Map<String,Img> temp = new HashMap<>();
temp.put("NumEtu", rogneurNumEtu(imgOriginale));
temp.put("Note", rogneurNote(imgOriginale));
//temp.put("FormatNote", rogneurFormatNote(imgOriginale));
return temp;
}
// rogne la partie du numEtu
public static Img rogneurNumEtu(BufferedImage imgOriginale)
{
return (new ImgNumEtu(imgOriginale.getSubimage((imgOriginale.getWidth()/4)+4
, imgOriginale.getHeight()-imgOriginale.getHeight()+115
, (imgOriginale.getWidth()/4+150)-(imgOriginale.getWidth()/4+4)
, imgOriginale.getHeight()-imgOriginale.getHeight()+146-(imgOriginale.getHeight()-imgOriginale.getHeight()+115) )));
}
// rogne la partie de la note
public static Img rogneurNote(BufferedImage imgOriginale)
{
return (new ImgNumEtu(imgOriginale.getSubimage((imgOriginale.getWidth()/4)+4
, imgOriginale.getHeight()-imgOriginale.getHeight()+160
, (imgOriginale.getWidth()/4+150)-(imgOriginale.getWidth()/4+4)
, imgOriginale.getHeight()-imgOriginale.getHeight()+200-(imgOriginale.getHeight()-imgOriginale.getHeight()+160) )));
}
// rogne la partie du format de la note
/*public static Img rogneurFormatNote(BufferedImage imgOriginale)
{
return imgOriginale.getSubimage(x, y, w, h);
}*/
}

97
NGCC/src/ocr/diag.ucls Normal file
View File

@ -0,0 +1,97 @@
<?xml version="1.0" encoding="UTF-8"?>
<class-diagram version="1.2.3" icons="true" always-add-relationships="false" generalizations="true" realizations="true"
associations="true" dependencies="false" nesting-relationships="true" router="FAN">
<class id="1" language="java" name="ocr.ImgNumEtu" project="PT" file="/PT/src/ocr/ImgNumEtu.java" binary="false"
corner="BOTTOM_RIGHT">
<position height="99" width="157" x="309" y="901"/>
<display autosize="true" stereotype="true" package="true" initial-value="false" signature="true"
sort-features="false" accessors="true" visibility="true">
<attributes public="true" package="true" protected="true" private="true" static="true"/>
<operations public="true" package="true" protected="true" private="true" static="true"/>
</display>
</class>
<class id="2" language="java" name="ocr.Img" project="PT" file="/PT/src/ocr/Img.java" binary="false"
corner="BOTTOM_RIGHT">
<position height="207" width="159" x="407" y="654"/>
<display autosize="true" stereotype="true" package="true" initial-value="false" signature="true"
sort-features="false" accessors="true" visibility="true">
<attributes public="true" package="true" protected="true" private="true" static="true"/>
<operations public="true" package="true" protected="true" private="true" static="true"/>
</display>
</class>
<class id="3" language="java" name="ocr.Rogneur" project="PT" file="/PT/src/ocr/Rogneur.java" binary="false"
corner="BOTTOM_RIGHT">
<position height="153" width="267" x="100" y="322"/>
<display autosize="true" stereotype="true" package="true" initial-value="false" signature="true"
sort-features="false" accessors="true" visibility="true">
<attributes public="true" package="true" protected="true" private="true" static="true"/>
<operations public="true" package="true" protected="true" private="true" static="true"/>
</display>
</class>
<class id="4" language="java" name="ocr.Copie" project="PT" file="/PT/src/ocr/Copie.java" binary="false"
corner="BOTTOM_RIGHT">
<position height="81" width="87" x="407" y="322"/>
<display autosize="true" stereotype="true" package="true" initial-value="false" signature="true"
sort-features="false" accessors="true" visibility="true">
<attributes public="true" package="true" protected="true" private="true" static="true"/>
<operations public="true" package="true" protected="true" private="true" static="true"/>
</display>
</class>
<class id="5" language="java" name="ocr.ImgNote" project="PT" file="/PT/src/ocr/ImgNote.java" binary="false"
corner="BOTTOM_RIGHT">
<position height="99" width="143" x="506" y="901"/>
<display autosize="true" stereotype="true" package="true" initial-value="false" signature="true"
sort-features="false" accessors="true" visibility="true">
<attributes public="true" package="true" protected="true" private="true" static="true"/>
<operations public="true" package="true" protected="true" private="true" static="true"/>
</display>
</class>
<class id="6" language="java" name="ocr.OCR" project="PT" file="/PT/src/ocr/OCR.java" binary="false"
corner="BOTTOM_RIGHT">
<position height="99" width="217" x="534" y="322"/>
<display autosize="true" stereotype="true" package="true" initial-value="false" signature="true"
sort-features="false" accessors="true" visibility="true">
<attributes public="true" package="true" protected="true" private="true" static="true"/>
<operations public="true" package="true" protected="true" private="true" static="true"/>
</display>
</class>
<class id="7" language="java" name="ocr.ImagesCopie" project="PT" file="/PT/src/ocr/ImagesCopie.java" binary="false"
corner="BOTTOM_RIGHT">
<position height="99" width="166" x="407" y="515"/>
<display autosize="true" stereotype="true" package="true" initial-value="false" signature="true"
sort-features="false" accessors="true" visibility="true">
<attributes public="true" package="true" protected="true" private="true" static="true"/>
<operations public="true" package="true" protected="true" private="true" static="true"/>
</display>
</class>
<generalization id="8">
<end type="SOURCE" refId="1"/>
<end type="TARGET" refId="2"/>
</generalization>
<association id="9">
<end type="SOURCE" refId="7" navigable="false">
<attribute id="10" name="hMapImgs"/>
<multiplicity id="11" minimum="0" maximum="2147483647"/>
</end>
<end type="TARGET" refId="2" navigable="true"/>
<display labels="true" multiplicity="true"/>
</association>
<generalization id="12">
<end type="SOURCE" refId="5"/>
<end type="TARGET" refId="2"/>
</generalization>
<association id="13">
<end type="SOURCE" refId="4" navigable="false">
<attribute id="14" name="base"/>
<multiplicity id="15" minimum="0" maximum="1"/>
</end>
<end type="TARGET" refId="7" navigable="true"/>
<display labels="true" multiplicity="true"/>
</association>
<classifier-display autosize="true" stereotype="true" package="true" initial-value="false" signature="true"
sort-features="false" accessors="true" visibility="true">
<attributes public="true" package="true" protected="true" private="true" static="true"/>
<operations public="true" package="true" protected="true" private="true" static="true"/>
</classifier-display>
<association-display labels="true" multiplicity="true"/>
</class-diagram>

View File

@ -1,37 +0,0 @@
package ocr_orm;
import java.awt.image.*;
import javax.imageio.ImageIO;
import org.apache.pdfbox.rendering.ImageType;
import java.awt.Image;
@SuppressWarnings("unused")
public class ImageNGCC {
BufferedImage imgcopie ;
BufferedImage imgNumEtu;
BufferedImage imgNote;
public ImageNGCC(BufferedImage buf){
imgcopie=buf;
imgNumEtu = imgcopie.getSubimage(0,0, 100, 50);
imgNote = imgcopie.getSubimage(50,50,100,50);
}
public BufferedImage getImgNumEtu() {
return imgNumEtu;
}
public BufferedImage getImgNote() {
return imgNote;
}
}
//https://docs.oracle.com/javase/tutorial/2d/images/drawimage.html

View File

@ -1,46 +0,0 @@
package ocr_orm;
import java.awt.image.BufferedImage;
import java.util.ArrayList;
import java.util.HashMap;
;
public class ListeImageNGCC {
private ArrayList<ImageNGCC> listeImage = new ArrayList<ImageNGCC>();
public ListeImageNGCC(ArrayList<BufferedImage> liste) {
for(int i=0; i<liste.size();i++)
{
//ON AJOUTE UNE IMAGE NGCC CREE A PARTIR DE CHAQUE IMAGE DE LA LISTE D'IMAGE BUF
listeImage.add(new ImageNGCC(liste.get(i)) );
}
}
public ArrayList<ImageNGCC> getListeImage(ArrayList<BufferedImage> liste) {
return listeImage;
}
public int taille() {
return listeImage.size();
}
public HashMap<String, String> doOCR(){
HashMap<String,String> maMap = new HashMap<String, String>();
OCR ocr = new OCR();
for (int i=0;i<listeImage.size();i++) {
String strNote;
String strNumEtu;
strNote = ocr.getOCR(listeImage.get(i).getImgNote());
strNumEtu = ocr.getOCR(listeImage.get(i).getImgNumEtu());
maMap.put(strNumEtu, strNote);
}
return maMap;
}
}