@startuml scale 1200 width title: Processing Files skinparam monochrome true skinparam backgroundColor white skinparam rectangle { roundCorner<<Input>> 25 roundCorner<<Output>> 5 } rectangle Input <<Input>> { file "html" file "plaintext" file "image" file "msoffice" file "rtf" file "odf" file "pdf" } node toBoth [ PDF + TXT ] node toPdf [ PDF ] node toTxt [ TXT ] image --> toBoth:<tesseract> html --> toPdf:<wkhtmltopdf> toPdf --> toTxt:[pdfbox] plaintext --> html:[flexmark] msoffice --> toPdf:<unoconv> msoffice --> toTxt:[poi] rtf --> toTxt:[jdk] rtf --> toPdf:<unoconv> odf --> toTxt:[tika] odf --> toPdf:<unoconv> pdf --> toTxt:<tesseract> pdf --> toTxt:[pdfbox] plaintext -> toTxt:[identity] @enduml