Files
Dokumenten-Check/dc-backend/target/classes/de/frigosped/dc/service/DocumentProcessingService.class

111 lines
13 KiB
Plaintext
Raw Normal View History

2026-06-01 14:21:42 +02:00
<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ab
2026-04-27 14:57:33 +02:00
 java/lang/Object<init>()V
 
2026-06-01 14:21:42 +02:00
1de/frigosped/dc/service/DocumentProcessingService extractTextJ([BLjava/lang/String;Ljava/lang/String;Ljava/lang/Long;)Ljava/lang/String;
 resolveMimeType8(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;  LOGLorg/jboss/logging/Logger;Extrahiere Text: %s (%s)
 org/jboss/logging/Loggerdebugf9(Ljava/lang/String;Ljava/lang/Object;Ljava/lang/Object;)V
 !"java/lang/StringhashCode()I$application/pdf
& '(equals(Ljava/lang/Object;)Z*Gapplication/vnd.openxmlformats-officedocument.wordprocessingml.document,application/msword.'application/vnd.oasis.opendocument.text0
text/plain2 text/markdown
4 56extractFromPdf&([BLjava/lang/Long;)Ljava/lang/String;
8 9:extractFromDocx([B)Ljava/lang/String;
< =:extractFromOdt ?@A BC!java/nio/charset/StandardCharsetsUTF_8Ljava/nio/charset/Charset;
E F([BLjava/nio/charset/Charset;)VH/Unbekannter MIME-Typ '%s' versuche als Text
J KLwarnf'(Ljava/lang/String;Ljava/lang/Object;)VNjava/lang/ExceptionPFehler bei Textextraktion (%s)
R STerrorf<(Ljava/lang/Throwable;Ljava/lang/String;Ljava/lang/Object;)VVjava/lang/RuntimeException
MX YZ
getMessage()Ljava/lang/String;\ ]^makeConcatWithConstants&(Ljava/lang/String;)Ljava/lang/String;
U` a*(Ljava/lang/String;Ljava/lang/Throwable;)VcStarte PDF-OCR...
e fgdebug(Ljava/lang/Object;)Vijava/lang/StringBuilder
h
lmn oporg/apache/pdfbox/LoaderloadPDF*([B)Lorg/apache/pdfbox/pdmodel/PDDocument;r'org/apache/pdfbox/rendering/PDFRenderer
qt u)(Lorg/apache/pdfbox/pdmodel/PDDocument;)V
wxy z"$org/apache/pdfbox/pdmodel/PDDocumentgetNumberOfPages|PDF hat %d Seite(n)
~ (Ljava/lang/String;I)V<00>OCR Seite %d/%d
<00> <00>(Ljava/lang/String;II)VCH <00><00><00> <00><00>%org/apache/pdfbox/rendering/ImageTypeRGB'Lorg/apache/pdfbox/rendering/ImageType;
q<00> <00><00>renderImageWithDPII(IFLorg/apache/pdfbox/rendering/ImageType;)Ljava/awt/image/BufferedImage;<00>java/io/ByteArrayOutputStream
<00><00>PNG
<00><00><00> <00><00>javax/imageio/ImageIOwriteI(Ljava/awt/image/RenderedImage;Ljava/lang/String;Ljava/io/OutputStream;)Z
<00><00><00> <00><00>java/util/Base64
2026-04-27 14:57:33 +02:00
getEncoder()Ljava/util/Base64$Encoder;
2026-06-01 14:21:42 +02:00
<00><00> <00><00> toByteArray()[B
<00><00><00> <00>:java/util/Base64$EncoderencodeToString
<00> <00><00>ocrPage8(Ljava/lang/String;IILjava/lang/Long;)Ljava/lang/String;
h<00> <00><00>append-(Ljava/lang/String;)Ljava/lang/StringBuilder;<00>
2026-04-27 14:57:33 +02:00
2026-06-01 14:21:42 +02:00
w<00> <00>close<00>java/lang/Throwable
<00><00> <00><00> addSuppressed(Ljava/lang/Throwable;)V
h<00> <00>ZtoString
<00> <00>Ztrim<00>$dev/langchain4j/data/message/Content<00> image/png
<00><00><00> <00><00>)dev/langchain4j/data/message/ImageContentfromQ(Ljava/lang/String;Ljava/lang/String;)Ldev/langchain4j/data/message/ImageContent;<00> ]<00>(II)Ljava/lang/String;
<00><00><00> <00><00>(dev/langchain4j/data/message/TextContent>(Ljava/lang/String;)Ldev/langchain4j/data/message/TextContent;
<00><00><00> <00><00>(dev/langchain4j/data/message/UserMessageS([Ldev/langchain4j/data/message/Content;)Ldev/langchain4j/data/message/UserMessage; <00> <00><00>ocrModel.Ldev/langchain4j/model/chat/ChatLanguageModel; <00><00><00> <00><00>java/util/Listof$(Ljava/lang/Object;)Ljava/util/List; <00><00><00> <00><00>,dev/langchain4j/model/chat/ChatLanguageModelgenerate9(Ljava/util/List;)Ldev/langchain4j/model/output/Response; <00> <00><00> costTracker.Lde/frigosped/dc/service/AiCostTrackerService;<00>ocr<00>OCR
<00><00><00> <00><00>%dev/langchain4j/model/output/Response
tokenUsage+()Ldev/langchain4j/model/output/TokenUsage;
<00><00><00> <00><00>,de/frigosped/dc/service/AiCostTrackerServicetrackp(Ljava/lang/String;Ljava/lang/String;Ljava/lang/Long;Ljava/lang/Long;Ldev/langchain4j/model/output/TokenUsage;)V
<00><00> content()Ljava/lang/Object;&dev/langchain4j/data/message/AiMessage
 Ztext Konvertiere DOCX → Markdown...
*org/apache/poi/xwpf/usermodel/XWPFDocument java/io/ByteArrayInputStream
  ([B)V
  (Ljava/io/InputStream;)V
  getBodyElements()Ljava/util/List; <00> iterator()Ljava/util/Iterator;   java/util/IteratorhasNext()Z " #next%*org/apache/poi/xwpf/usermodel/IBodyElement'+org/apache/poi/xwpf/usermodel/XWPFParagraph
) *+paragraphToMarkdownA(Lorg/apache/poi/xwpf/usermodel/XWPFParagraph;)Ljava/lang/String;-
/'org/apache/poi/xwpf/usermodel/XWPFTable
1 23tableToMarkdown=(Lorg/apache/poi/xwpf/usermodel/XWPFTable;)Ljava/lang/String;
 <00>
&6 7ZgetText
9 : isBlank<
&> ?ZgetStyleAHeading1
C DEequalsIgnoreCase(Ljava/lang/String;)ZG berschrift1\JHeading2L berschrift2\OHeading3Q berschrift3\THeading4V berschrift4\
&Y Z[
getNumIlvl()Ljava/math/BigInteger;\
.^ _getRows <00>a b isEmpty <00>d efget(I)Ljava/lang/Object;h*org/apache/poi/xwpf/usermodel/XWPFTableRowj|
gl m getTableCellso pqaccept8(Ljava/lang/StringBuilder;)Ljava/util/function/Consumer; <00>s tuforEach (Ljava/util/function/Consumer;)Vw
|o <00>z {"size o~Konvertiere ODT → Markdown...
<01><01><01> <01><01>)org/odftoolkit/odfdom/doc/OdfTextDocument loadDocumentB(Ljava/io/InputStream;)Lorg/odftoolkit/odfdom/doc/OdfTextDocument;
<01><01> <01><01> getContentDom+()Lorg/odftoolkit/odfdom/dom/OdfContentDom;<01>text:p
<01><01><01> <01><01>'org/odftoolkit/odfdom/dom/OdfContentDomgetElementsByTagName*(Ljava/lang/String;)Lorg/w3c/dom/NodeList; <01><01><01> <01>"org/w3c/dom/NodeList getLength <01><01> <01><01>item(I)Lorg/w3c/dom/Node; <01><01><01> <01>Zorg/w3c/dom/NodegetTextContent <01><01> <01><01> getAttributes()Lorg/w3c/dom/NamedNodeMap;<01>text:style-name <01><01><01> <01><01>org/w3c/dom/NamedNodeMap getNamedItem&(Ljava/lang/String;)Lorg/w3c/dom/Node; <01><01> <01>Z getNodeValue<01> Heading_20_1
<01> <01>E
startsWith<01># <01> Heading_20_2<01>## <01> Heading_20_3<01>###
<01><00><01>application/octet-stream
<01> <01>Z toLowerCase<01>.pdf
<01> <01>EendsWith<01>.docx<01>.doc<01>.odt<01>.txt<01>.md
<01>6<01>+org/apache/poi/xwpf/usermodel/XWPFTableCell<01> | <01>---|
<01> <01><01> getLogger-(Ljava/lang/Class;)Lorg/jboss/logging/Logger;OCR_DPIF ConstantValueRuntimeVisibleAnnotationsLjakarta/inject/Inject;Ljakarta/inject/Named;valueCodeLineNumberTableLocalVariableTablethis3Lde/frigosped/dc/service/DocumentProcessingService;:([BLjava/lang/String;Ljava/lang/String;)Ljava/lang/String; fileBytes[BmimeTypeLjava/lang/String;filenameMethodParameterseLjava/lang/Exception; projectIdLjava/lang/Long; effectiveMime StackMapTable<01><01>java/lang/LongimageLjava/awt/image/BufferedImage;baosLjava/io/ByteArrayOutputStream; base64ImagepageTextiIrenderer)Lorg/apache/pdfbox/rendering/PDFRenderer; pageCountpdf&Lorg/apache/pdfbox/pdmodel/PDDocument;resultLjava/lang/StringBuilder;
2026-04-27 14:57:33 +02:00
ExceptionspageNum
2026-06-01 14:21:42 +02:00
totalPagesmessage*Ldev/langchain4j/data/message/UserMessage;response'Ldev/langchain4j/model/output/Response;LocalVariableTypeTableQLdev/langchain4j/model/output/Response<Ldev/langchain4j/data/message/AiMessage;>;para-Lorg/apache/poi/xwpf/usermodel/XWPFParagraph;table)Lorg/apache/poi/xwpf/usermodel/XWPFTable;element,Lorg/apache/poi/xwpf/usermodel/IBodyElement;doc,Lorg/apache/poi/xwpf/usermodel/XWPFDocument;mdstylesbrowsLjava/util/List;header,Lorg/apache/poi/xwpf/usermodel/XWPFTableRow;>Ljava/util/List<Lorg/apache/poi/xwpf/usermodel/XWPFTableRow;>; styleAttrLorg/w3c/dom/Node;node
2026-04-27 14:57:33 +02:00
paragraphsLorg/w3c/dom/NodeList;odfDoc+Lorg/odftoolkit/odfdom/doc/OdfTextDocument;lowerlambda$tableToMarkdown$2I(Ljava/lang/StringBuilder;Lorg/apache/poi/xwpf/usermodel/XWPFTableCell;)Vc-Lorg/apache/poi/xwpf/usermodel/XWPFTableCell;lambda$tableToMarkdown$1lambda$tableToMarkdown$0<clinit>
2026-06-01 14:21:42 +02:00
SourceFileDocumentProcessingService.java.Ljakarta/enterprise/context/ApplicationScoped;BootstrapMethods5 Textextraktion fehlgeschlagen: 7yDu bist ein OCR-Spezialist. Extrahiere den gesamten Text aus diesem Dokument-Bild (Seite  von ).
2026-04-27 14:57:33 +02:00
Regeln:
- Formatiere den Text als Markdown
- Überschriften als # / ## / ###
- Tabellen als Markdown-Tabellen
- Listen als - oder 1. 2. 3.
- Behalte den Originaltext exakt (keine Korrekturen, keine Zusammenfassungen)
2026-06-01 14:21:42 +02:00
- Antworte NUR mit dem extrahierten Markdown, ohne Präambel9# ;## =### ?#### A- gD
E .*G0(Lorg/apache/poi/xwpf/usermodel/XWPFTableCell;)VI
J -*L
M )*O
PQR ]S$java/lang/invoke/StringConcatFactory<00>(Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/MethodType;Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/invoke/CallSite;U
VWX YZ"java/lang/invoke/LambdaMetafactory metafactory<00>(Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodType;)Ljava/lang/invoke/CallSite; InnerClassesEncoder^%java/lang/invoke/MethodHandles$Lookup`java/lang/invoke/MethodHandlesLookup!<01><01><01><00><00><00><01><01><01><01>s<00><00><00><01><01><01>/*<2A><01><01>&<01> <01><01> <01><01>Q *+,-<01><07><01>A<01>* <01><01> <01><01> <01><01> <01><01><01> <01><01><01> <01>;*,-<2D> :<05>-<05>:6<06><1D><00><06><>k2i<><69><EFBFBD><EFBFBD>9<>\<5C><>I<>8<EFBFBD><38><00>0<EFBFBD><30>hy5<79><35>OY#<23>%<25>V6<07>P)<29>%<25>F6<07>@+<2B>%<25>66<07>0-<2D>%<25>&6<07> /<2F>%<25>6<07>1<>%<25>6<07>M%//7??*+<04>3<>6*+<2B>7<>.*+<2B>;<3B>&<26>Y+<2B>><3E>D<><18>G<05>I<>Y+<2B>><3E>D<>:<06>O-<2D>Q<>UY<06>W<>[<06>_<>M<01>6 EFI<00>K<00>N<00>P<00>RTUIXY'Z<01>H<01><01>;<01><01>;<01><01>;<01><01>;<01><01>;<01><01>3<01><01><01>7<0E>X &  <0A><01><01>@M<01><01><01><01><01>56<01><01> ɲb<>d<>hY<68>jN+<2B>k:<04>qY<04>s:<04>v6<06>{<06>}6<06>`<60><12>`<06><00><12><><00><><00>:<08><00>Y<EFBFBD><00>: <12> <09><00>W<EFBFBD><00> <09><00><><00>:
*
`,<2C><00>: - <0B><00><12><><00>W<EFBFBD><01><><EFBFBD><04>&<04><00><>:<04><04><00><> :<06><00><05>-<2D><00><><00><><00><00><00><00><00><00><00><01>Jcdfg!h(i2k<lJmXoapkqxs<00>t<00>k<00>v<00>f<00>x<01>z X;<01><01>a2<01><01> x<01><01>
<00> <01><01> 5d<01>!x(q<00><00><01><01><00><01><01><00><01><01><00><01>D<06>5<01><01>hwq<00>cL<00><><01><01>hw<00><00><08>M<01> <01><01><00><00><01><00>N<05><00>Y+Ÿ<00>SY<1D><00><00><00>S<EFBFBD><00>:*<2A><00><05>޹<00>:*<2A><00><12><12><06><00><><00><06><00><><02><04><01>"| }~|<00>%<00>/<00>B<00><01>HN<01><01>N<01><01>N N
N<01><01>/  /  / <01><01> 
<01>9:<01><01><00><><07>d<>hY<68>jM<6A> Y<> Y+<2B> <0A>N-<2D><13>:<04><00>U<04>!<00>$:<05>&<26><05>&:,*<06>(<28><00>,<2C><00>W<EFBFBD>#<05>.<2E><05>.:,*<07>0<><00>,<2C><00>W<EFBFBD><57><EFBFBD>-<2D>4<>:-<2D>4<> :<05><00><04>,<2C><00><><00><>!<00><00><00><00><00><00><00><01>2 <00> <00><00>!<00>B<00>Q<00>e<00>t<00><00><00><00><00><00><00><00><00><01>HQtBC!<00><00><01><01><00><01><01><00><01>;<08>,h <1C>8$<24><1F>F<00><><01>h <00><00><08>M<01><01>*+<01>9<00>+<2B>5M,<2C>
,<2C>8<>;<3B>+<2B>=N-<2D>,<2C>-@<40>B<> -F<>B<>
,<2C>H<00>-I<>B<> -K<>B<>
,<2C>M<00>-N<>B<> -P<>B<>
,<2C>R<00>-S<>B<> -U<>B<>
,<2C>W<00>+<2B>X<>
,<2C>\<00>,<2C><01>><00><00><00><00><00>3<00>:<00>N<00>U<00>i<00>p<00><00><00><00><00><00><00><00><00><01>*<00><01><01><00><00><01><00><01><01> <0C><03>
 <01>23<01>a<00><>hY<68>jM+<2B>]N-<2D>`<00>;<3B>-<03>c<00>g:,i<><00>W<04>k,<2C>n<00>r,v<><00>W<04>k,<2C>x<00>r,,<2C><00>W6-<2D>y<00>2,i<><00>W-<05>c<00>g<>k,<2C>|<00>r,,<2C><00>W<EFBFBD><01><><EFBFBD>,<2C><00><><01>><00><00> <00><00>&<00>.<00>><00>F<00>V<00>^<00>l<00>t<00><00><00><00><00><00><00><01>>a:<01><00><01><01><00><00> <00>&z  <00> <01><03>h<00><>Fg<01>9<01>=:<01><02>
A<>}<7D>d<>hY<68>jM<6A> Y+<2B> <0A>N-<2D><01><01><><01>:6<04><01><00><00><05><01>:<06><01>:<07><00><07>8<><00><06><01><01><><01>:<08> <08><01><00>;:  <01><><01><> @<40><01><>,<01><><00><07><00>,<2C><00>W<EFBFBD>h <01><><01><> I<><01><>,<01><><00><07><00>,<2C><00>W<EFBFBD>< <01><><01><> N<><01><>,<01><><00><07><00>,<2C><00>W<EFBFBD>,<07><00>,<2C><00>W<EFBFBD><01><>-<2D>#-<2D><01><>:-<2D>-<2D><01><> :<05><00><04>,<2C><00><><00><> <00>&*-<00><01>^<00> <00><00><00>$<00>)<00>8<00>C<00>L<00>Y<00>c<00>j<00>~<00><00><00><00><00><00><00><00><00><00><00><00><00><00> <00>9<00><01>f
j<00>!"~<00><01> C<00>#"L<00><01>,<00><01>)<00>$%&'A<01><01>A<01><01>0<01>o<0F>,<01>h<01><01><00>L<01><01>B<1E><15> <01>h<01><01><00>J<00><> <01>h<01><00><00><08>M<01><01><01><00>v+<2B>+<2B>8<>+<01><>%<25>+<2B>,<2C><01><>,<2C><01>N-öř#<23>-ȶř)<29>-ʶř+<2B>-̶ř-<2D>-ζř/<2F>-жř1<><01><><01>2 
 $ 1 >KXer<01>*v<01><01>v<01><01>v<01><01>$R(<01><01><07> <01> <01><01>
)*<01>D*+<2B>Ҷ<00>ն<00>W<EFBFBD><01><00><01>+,
-*<01>= *׶<00>W<EFBFBD><01><00><01>  +,
.*<01>D*+<2B>Ҷ<00>ն<00>W<EFBFBD><01><00><01>+,/<01>! <08>ٳ<11><01>(01<01>23J
N4N6N8N:N<N>N@TBCFTBHFTBKF[<00><00>\ ]_a