tobby48 4 years ago
parent
commit
b7c885784d

+ 7
- 0
pom.xml View File

@@ -327,6 +327,13 @@
327 327
 			<version>1.5.1</version>
328 328
 		</dependency>
329 329
 	
330
+		<!-- https://mvnrepository.com/artifact/net.sourceforge.tess4j/tess4j -->
331
+		<dependency>
332
+		    <groupId>net.sourceforge.tess4j</groupId>
333
+		    <artifactId>tess4j</artifactId>
334
+		    <version>4.5.3</version>
335
+		</dependency>
336
+		
330 337
 	</dependencies>
331 338
 	
332 339
 	<build>

+ 39
- 0
src/main/java/kr/co/swh/lecture/opensource/ocr/ImageToText.java View File

@@ -0,0 +1,39 @@
1
+package kr.co.swh.lecture.opensource.ocr; 
2
+
3
+import java.io.File;
4
+
5
+import net.sourceforge.tess4j.Tesseract;
6
+import net.sourceforge.tess4j.TesseractException;
7
+
8
+/**
9
+ * <pre>
10
+ * kr.co.swh.lecture.opensource.ocr 
11
+ * ImageToText.java
12
+ *
13
+ * 설명 :
14
+ * </pre>
15
+ * 
16
+ * @since : 2020. 10. 25.
17
+ * @author : tobby48
18
+ * @version : v1.0
19
+ */
20
+public class ImageToText {
21
+
22
+	public static void main(String[] args) {
23
+		// TODO Auto-generated method stub
24
+		File image = new File("src/main/resources/ocr/sample.jpg");
25
+		Tesseract tesseract = new Tesseract();
26
+		tesseract.setDatapath("src/main/resources/ocr/result");
27
+		tesseract.setLanguage("ko");
28
+		tesseract.setPageSegMode(1);
29
+		tesseract.setOcrEngineMode(1);
30
+		try {
31
+			String result = tesseract.doOCR(image);
32
+			System.out.println(result);
33
+		} catch (TesseractException e) {
34
+			// TODO Auto-generated catch block
35
+			e.printStackTrace();
36
+		}
37
+	}
38
+
39
+}

+ 56
- 0
src/main/java/kr/co/swh/lecture/opensource/ocr/LineDraw_Quiz.java View File

@@ -0,0 +1,56 @@
1
+package kr.co.swh.lecture.opensource.ocr;
2
+
3
+
4
+import java.awt.BasicStroke;
5
+import java.awt.Color;
6
+import java.awt.Graphics;
7
+import java.awt.Graphics2D;
8
+import java.awt.Point;
9
+import java.awt.event.MouseAdapter;
10
+import java.awt.event.MouseEvent;
11
+import java.awt.event.MouseMotionAdapter;
12
+import java.awt.geom.Line2D;
13
+import java.util.ArrayList;
14
+
15
+import javax.swing.JFrame;
16
+import javax.swing.JPanel;
17
+
18
+public class LineDraw_Quiz extends JPanel {
19
+	private final ArrayList<Point> point = new ArrayList<>();
20
+
21
+	public LineDraw_Quiz() {
22
+		addMouseListener(new MouseAdapter() {
23
+			public void mousePressed(MouseEvent event) {
24
+				point.add(event.getPoint());
25
+				repaint();
26
+			}
27
+		});
28
+
29
+		addMouseMotionListener(new MouseMotionAdapter() {
30
+			public void mouseDragged(MouseEvent event) {
31
+				point.add(event.getPoint());
32
+				repaint();
33
+			}
34
+			
35
+		});
36
+	}
37
+
38
+	public void paintComponent(Graphics g) {
39
+		super.paintComponent(g);
40
+		Graphics2D g2 = (Graphics2D) g;
41
+		g2.setColor(new Color(0, 0, 128));
42
+		g2.setStroke(new BasicStroke(15f,
43
+				BasicStroke.CAP_ROUND,
44
+				BasicStroke.JOIN_ROUND));
45
+		for (int i = 1; i < point.size(); i++)
46
+			g2.draw(new Line2D.Float(point.get(i-1), point.get(i)));
47
+	}
48
+
49
+	public static void main(String[] args) {
50
+		JFrame f = new JFrame();
51
+		f.add(new LineDraw_Quiz());
52
+		f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
53
+		f.setSize(800, 600);
54
+		f.setVisible(true);
55
+	}
56
+}

+ 84
- 0
src/main/java/kr/co/swh/lecture/opensource/ocr/LineDraw_Solution.java View File

@@ -0,0 +1,84 @@
1
+package kr.co.swh.lecture.opensource.ocr;
2
+
3
+
4
+import java.awt.BasicStroke;
5
+import java.awt.Color;
6
+import java.awt.Graphics;
7
+import java.awt.Graphics2D;
8
+import java.awt.Point;
9
+import java.awt.event.MouseAdapter;
10
+import java.awt.event.MouseEvent;
11
+import java.awt.event.MouseMotionAdapter;
12
+import java.awt.geom.Line2D;
13
+import java.util.ArrayList;
14
+import java.util.List;
15
+
16
+import javax.swing.JFrame;
17
+import javax.swing.JPanel;
18
+
19
+import com.google.gson.Gson;
20
+
21
+public class LineDraw_Solution extends JPanel {
22
+	private List<List<Point>> point = new ArrayList<List<Point>>();
23
+
24
+//	private static Circle circle;
25
+//	public static Circle getSingleton() {
26
+//		if(circle == null) circle = new Circle();
27
+//		return circle;
28
+//	}
29
+	
30
+	public LineDraw_Solution() {
31
+//		Circle c = Circle.get();
32
+		
33
+		
34
+		addMouseListener(new MouseAdapter() {
35
+			public void mousePressed(MouseEvent event) {
36
+				List<Point> list = new ArrayList<Point>();
37
+				point.add(list);
38
+			}
39
+			
40
+			@Override
41
+			public void mouseClicked(MouseEvent e) {
42
+				// TODO Auto-generated method stub
43
+
44
+			}
45
+			
46
+		});
47
+
48
+		addMouseMotionListener(new MouseMotionAdapter() {
49
+			public void mouseDragged(MouseEvent event) {
50
+				Point p = event.getPoint();
51
+				Gson gg = new Gson();
52
+				System.out.println(gg.toJson(point));
53
+				point.get(point.size()-1).add(event.getPoint());
54
+				repaint();
55
+			}
56
+			
57
+		});
58
+		
59
+	}
60
+
61
+	public void paintComponent(Graphics g) {
62
+		super.paintComponent(g);
63
+		Graphics2D g2 = (Graphics2D) g;
64
+		g2.setColor(new Color(0, 0, 128));
65
+		g2.setStroke(new BasicStroke(15f,
66
+				BasicStroke.CAP_ROUND,
67
+				BasicStroke.JOIN_ROUND));
68
+		for (int i = 0; i < point.size(); i++) {
69
+			List<Point> l = point.get(i);
70
+			for (int j = 1; j < l.size(); j++) {
71
+				g2.draw(new Line2D.Float(l.get(j-1), l.get(j)));
72
+			}
73
+		}
74
+	}
75
+
76
+	public static void main(String[] args) {
77
+//		Thread.currentThread().getContextClassLoader().getResourceAsStream("db.pro")
78
+		JFrame f = new JFrame();
79
+		f.add(new LineDraw_Solution());
80
+		f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
81
+		f.setSize(800, 600);
82
+		f.setVisible(true);
83
+	}
84
+}

BIN
src/main/resources/ocr/sample.jpg View File