gpt4 book ai didi

Java : Converting colored image to monochrome and keep text readable

转载 作者:太空宇宙 更新时间:2023-11-04 12:56:59 28 4
gpt4 key购买 nike

我正在开发一个项目,计划使用 tesseract OCR 来从给定图像中提取文本。当我提供单色图像时,T​​esseract 不会有太大问题。

然而,彩色图像是完全不同的情况。我从中得到的大部分都是乱码文本。所以我想到将图像转换为单色,然后将其传递给 Tesseract。不幸的是,我的皈依努力并没有取得令人满意的结果。

图像正在转换为单色,但文本不知何故被搞砸了(想不出合适的词)。 即使我无法正确阅读文本,我怎么能指望程序能够呢?

所以我面临的主要问题是,如何在 Java 中将彩色图像转换为单色,并且文本不会被破坏(再次)。

我们的项目运行在Linux服务器上,所以如果有任何脚本或其他程序,我可以从Java调用并获取结果也可以。但我更喜欢用Java。

这是我的代码:

 @Override
public void testOcr() {
ITesseract instance = new Tesseract();
File imageFile = new File("/home/username/other.jpg");
BufferedImage img = null;
img = ImageIO.read(imageFile);

BufferedImage blackNWhite = new BufferedImage(img.getWidth(),img.getHeight(),BufferedImage.TYPE_BYTE_BINARY);
Graphics2D graphics = blackNWhite.createGraphics();
graphics.drawImage(img, 0, 0, null);
File outputfile = new File("/home/username/other1.jpg");
ImageIO.write(blackNWhite, "jpg", outputfile);
instance.setDatapath("/usr/share/tesseract-ocr/");
// ISO 693-3 standard
instance.setLanguage("deu");
String result = instance.doOCR(outputfile);
System.out.println(result);
}

两张图片:

enter image description here

转换后的图像:

enter image description here

这是我从 Tesseract 得到的上述内容:

90/(/a —’Ä(l/énÄ ' ß(l(1(»m]«u
„„ „‚„„„ „ „„ „„ „‚„„„ „„ n 00 w—v „„„ s 3 na
‘„‘‚';‚ J‘;;Mt:.‘ *‘ “ ‘„*;;131:„'r„‘:1 „ . A „„ „„ _ «3 uu
„„ „.„„„\ „„ „„ uu „„„„\„..\ ; 5 oo “ ‘ " "' ‘* ‘=* —“ "°
„...„.„„. „‘ ‘„‘ „„ „„-„..„‚„„‚» <b(m
„..„„„„.‘ \ „„-„‚„„„„„k („m
„„„\„„„„ muu ‚„„„„„‚ s»’ou
m M 6«»//%
' ‚ , \ ‚“ _ „„ sKUD
:> 3 — „».>' ' z«„„«.„«„„„ <3(m
' ‘)\‚ia "‚ “ l’ ‚„„„.„„\_ „rm
.„.‚\ ‚ . \. .
‘. ‚„.‚.A _ \ „ „ "*°‘Ä‘ „„w„„m„»v.. mm
; ‚ \ :« ‘ 4 ‚ _.
»"9 » @ We have Spema\smr
' Lunch & D\nner ew3rydav
' ßm/n'/ ‚0(*JJP1/'
V\S\\ Cur '<’e3\au\an\ ’
?“"‘:‘“1“1C1„ 55"" ::‘‚:J:'.J‘.‘t‘:‘;1f:.1?t„ ““ Fur6'2a:'z:‘e '
..„„.‘„‚„.„„‘„..„ ‘ s7uu x.„„.„„..„.‘<h„.„„„ ;7uu Eng\gnCp -
5::r‘Ja‘.‘7r“x:1f‘."‘3:l'_„„ ““ ‘°°° @ us ‘
„.„..„‚„ „„„‚„‚ „ uu m.„„„< „„„„ sB 00 \23‚g5f„ 78% .L

那么,关于如何即兴阅读彩色图像的任何建议。谢谢。

最佳答案

您可以使用 OpenCV 进行二值化。但;如果您想要此示例的正确结果,teserrac 仍然需要调整大小。

这个命令应该可以正常工作。

  1. 其他图像处理操作(去噪、歪斜校正、锐化、裁剪、边框)
  2. 调整图像大小
  3. 对图像进行二值化
  4. OCR

关于Java : Converting colored image to monochrome and keep text readable,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35312627/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com